Palavras-chave: PHP, thumbnail, Imagens, GD
A grande maioria dos sites precisa gerar algum tipo de thumbnail ou pré-visualização em miniatura a partir de uma foto submetida ou de uma screenshot.
Abaixo segue uma pequena função em PHP que recebe uma imagem e gera outra, com a nova largura especificada, a altura é automaticamente calculada para manter a proporção em relação à imagem original. A imagem é redimensionada mantendo-se a qualidade de 100% (válido especialmente para o formato JPEG).
/* * Método geraThumb * Gera thumbnail a partir da foto */ function geraThumb($photo, $output, $new_width) { $source = imagecreatefromstring(file_get_contents($photo)); list($width, $height) = getimagesize($photo); if ($width>$new_width) { $new_height = ($new_width/$width) * $height; $thumb = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($thumb, $source, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagejpeg($thumb, $output, 100); } else { copy($photo, $output); } } ?>
O único problema é que esse script usa gobs de RAM. $source é uma versão descomprimida da imagem, e $thumb é outra imagem descomprimida. Então se você está tratando uma imagem de 6 megapixels truecolor vai gastar algo como 22MB mais o tamanho do thumbnail.
O PHP não libera memória de volta para o sistema depois que termina a execução do script, então depois de várias execuções você vai ficar com um monte de processos httpd bem gordos. Uma alternativa, se você usa o Apache, é chamar apache_child_terminate(), que vai forçar o httpd a se encerrar quando acabar de processar o request atual.
Maiores informações em:
http://www.php.net/apache_child_terminate
Como fez para manter a proporsão ?
Desculpe a ignorancia mais não entendi …
Um vez precisei de fazer isso e criei uma função que faz o MDC das dimensões da foto, pra quem não se lembra, MDC é o minimo divisor comum, posso compartilhar-la com voces so que não a tenho no trabalho, so em casa
Obrigado e até a proxima :)
Na Realidade MDC = Máximo divisor comum.. MMC = Mínimo multíplo comum.
O Brasil precisa de educação…..
oi, e como se usa ae isso na prática, dá um exemplo por gentileza, sou novato em php
Olá, consegui de forma alternativa aplicar thumbs em imagens originais, bem simples mesmo, falta de colocar a cachola pra funcionar
Como faço para chamar a função na hora que faço o upload das fotos?
E quais parametros irei passar?
Colocar o código e não explicar o mesmo, e so atrapalhar e fazer que procura algo serio perder tempo.
Ou explica ou nem colocar no site, por que nao tem sentido, pois que saber nao esta procurando algo parecido e que esta procurando precisa de no mínimo explicação, comentário. Negativo…
****Comentário corrigido.****
Colocar o código e não explicar o mesmo, e só atrapalhar e fazer que procura algo serio perder tempo.
Ou explica ou nem colocar no site, por que nao tem sentido, visto que quem sabe nao esta procurando e que esta procurando precisa de no mínimo uma pequena explicação.
Comentário. Negativo…
Parece até que copiou e colou de algum lugar.
olhem este… quem copiou de quem?
http://pablo.blog.br/35
Olhe o nome do autor aqui e olhe o nome do autor lá.
Isso vai te dar uma dica :)