Leobreda.Net
HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL
Pesquisa por: array
04 de agosto de 2009 07:51125 visitas
Programação Orientada à Objeto (POO) é uma coisa que está me ajudando atualmente, pois evita criar códigos redundantes.
Pra quem sabe trabalhar com POO em PHP, abaixo uma classe que utilizo constantemente para manipular imagens: criar thumbnail e listar todas as imagens de determinado diretório.
Classe ArquivoImagem:
<?php
Class ArquivoImagem
{
var $diretorio;
var $diretorioDestino;
var $arquivo;
var $largura;
var $altura;
#########################################################
# Monta uma relação de imagens em determinado diretório
# Saída: Vetor com informações do tipo nome, tamanho do arquivo, largura e altura
#########################################################
function ListarImagens()
{
$diretorio = strtolower($this->diretorio);
$vetor_arquivos = array();
//1. Abre o diretório
if(is_dir($diretorio))
{
$pasta = opendir($diretorio);
$i=0;
while (false !==($file = readdir($pasta)))
{
if (($file != '.') && ($file != '..'))
{
//Apenas imagens com extensão jpeg, jpg, gif, png
if ((!is_dir($file)) && (eregi('(jpeg|jpg|gif|png)$', $file)) && (false===strpos($file, "thumbnail_")))
{
# [0] = Nome do arquivo
# [1] = Tamanho do arquivo, em bytes
# [2] = Largura
# [3] = Altura
$vetor_arquivos[$i][0] = $file;
$vetor_arquivos[$i][1] = filesize($diretorio.$vetor_arquivos[$i][0]);
$vetor_arquivos[$i][2] = GetImageSize($diretorio.$vetor_arquivos[$i][0]);$vetor_arquivos[$i][2] = $vetor_arquivos[$i][2][0];
$vetor_arquivos[$i][3] = GetImageSize($diretorio.$vetor_arquivos[$i][0]);$vetor_arquivos[$i][3] = $vetor_arquivos[$i][3][1];
$i++;
}
}
}
closedir($pasta);
}
return $vetor_arquivos;
unset($vetor_arquivos);
}
#########################################################
# Cria Thumbnail de determinada Imagem
#########################################################
function CriarThumbnail()
{
$diretorio = strtolower($this->diretorio); //Diretório onde se encontra a imagem
$diretorioDestino = strtolower($this->diretorioDestino); //Diretório onde será salvo o thumbnail
$arquivo = strtolower($this->arquivo); //Nome do arquivo da imagem
$altura = strtolower($this->altura); //Tamanho da imagem, em altura
$largura = strtolower($this->largura); //Tamanho da imagem, em largura
//1. Lê a imagem de origem
$img_origem = imagecreatefromjpeg($diretorio.$arquivo);
//2. Pega as dimensões da imagem de origem
$origem_x = imagesx($img_origem); // Largura
$origem_y = imagesy($img_origem); // Altura
//3. Escolhe a largura maior, e se baseando nela mesma, gera a largura menor
if($origem_x > $origem_y) // Se a largura for maior que a altura
{
$final_x = $largura; // A largura será a do thumbnail
$final_y = floor($largura * $origem_y / $origem_x); // A altura é calculada
$f_x = 0; // Colar no x = 0
$f_y = round(($altura / 2) - ($final_y / 2)); // Centralizar a imagem no meio y do thumbnail
}
else
{ // Se a altura for maior ou igual à largura
$final_x = floor($altura * $origem_x / $origem_y); // Calcula a largura
$final_y = $altura; // A altura será a do thumbnail
$f_x = round(($largura / 2) - ($final_x / 2)); // Centraliza a imagem no meio x do thumbnail
$f_y = 0; // Colar no y = 0
}
//4. cria a imagem final para o thumbnail
$img_final = imageCreatetruecolor($largura,$altura);
//5. Define a cor do fundo (branco)
imagefill($img_final,0,0,imagecolorallocate($img_final, 255, 255, 255));
//6. Copia a imagem original para dentro do thumbnail
imagecopyresampled($img_final, $img_origem, $f_x, $f_y, 0, 0, $final_x, $final_y, $origem_x, $origem_y);
//7. Salva o thumbnail
imagejpeg($img_final, $diretorioDestino."thumbnail_".$arquivo, 90);
//8. Garbage Collector
ImageDestroy($img_origem);
ImageDestroy($img_final);
}
}