FUNÇÃO PHP PARA TRATAR IMAGENS AUTOMATICAMENTE

4 05 2009

Todo iniciante em php tem a incrível dificuldade de fazer uplod e tratamento de imagem automáticamente com php, que aliás não é possível realizar assim tão fácil quando não conhemos muito sobre php.  O tratamento de imagem automatizada na verdade é muito simples, mas requer bastante atenção e uso de biblioteca separada que deve ser instalada no servidor, caso o mesmo não possua. Bem, o intuito não é demonstrar como instalar nada, aliás vou postar a função pronta e caso surgir alguma dúvida posso eventualmente respondê-la.  A função recebe como parâmetro o arquivo em si, altura, largura e o nome. A função não força o tamanho especificado, mas faz a proporção adequada. Lembrando que a função trata apenas jpg por enquanto.


function trata_imagem($arquivo,$nome,$larg,$alt)
{
$temp_dir=$arquivo[tmp_name];
$nome_arq=$arquivo[name];
if($nome_arq!=”")
{
move_uploaded_file(“$temp_dir”,”$nome_arq”);
$imgsize = GetImageSize($nome_arq);
$img_w = $imgsize[0];
$img_h = $imgsize[1];
$img = ImageCreateFromJpeg(“$nome_arq”);
$larg_original=$img_w;
$alt_original=$img_h;

if($larg_original>$alt_original and $larg_original>$larg)
{
$prop=$img_w/$img_h;
$tam_w=$larg;
$tam_h=$tam_w/$prop;
}
if($larg_original<$alt_original and $alt_original>$alt )
{
$prop=$img_h/$img_w;
$tam_h=$alt;
$tam_w=$tam_h/$prop;
}
if($larg_original>$larg or $alt_original>$alt) {

$img_nova = ImageCreateTrueColor($tam_w,$tam_h);
imagecolorexact($img_nova, 255,255,255);
ImageCopyResized($img_nova, $img, 0, 0, 0, 0, $tam_w,$tam_h, $larg_original, $alt_original);
imagejpeg($img_nova,$nome_arq,80);
$c=copy($nome_arq,$nome);
}
else
{
$c=copy($nome_arq,$nome);
}
ImageDestroy($img);

} // fim do $arquivo

}//fim da funcao

Enjoy!

Créditos: Adriano Camilo / Francisco Buscariolli