Gerando Thumbnails com GD
Você precisa da Biblioteca GD, e se não tenha a biblioteca instalada, basta baixa-la no site www.boutell.com/gd, baixe o arquivo .zip (ou .tar.gz) e descompacte o conteúdo na sua pasta Apache, no mesmo diretório da pasta htdocs.
Acesse seu arquivo php.ini e procure a linha ;extension=php_gd2.dll. Descomente-a retirando o ";" da frente.
Pronto, agora você tem a Biblioteca GD instalada. Você pode verificar se ela foi instalada corretamente pela configuração do php:
Ou com o simples teste abaixo:
Agora que temos a biblioteca instalada, vamos ao script que cria as thumbnails.
Abaixo você vai ver o script já pronto, todas as linhas estão comentadas, para sabermos como ocorre o processo, e o que faz cada função.
Pronto, todas as thumbnails foram criadas com ótima qualidade.
O script não conta com nenhuma validação, com verificar se a imagem realmente é uma imagem válida, se existe o diretório onde estão as figuras ou onde serão gravadas as thumbnails, se a extensão é valida, dentre outras que julgo necessárias, ele apenas ilustra o processo de criação das imagens.
Fora isso espero que seja util.
Acesse seu arquivo php.ini e procure a linha ;extension=php_gd2.dll. Descomente-a retirando o ";" da frente.
Pronto, agora você tem a Biblioteca GD instalada. Você pode verificar se ela foi instalada corretamente pela configuração do php:
<?php phpinfo(); ?>
Ou com o simples teste abaixo:
<?php if (function_exists("imagecreate")) { echo "Parabéns! A GD está instalada!"; } ?>
Agora que temos a biblioteca instalada, vamos ao script que cria as thumbnails.
Abaixo você vai ver o script já pronto, todas as linhas estão comentadas, para sabermos como ocorre o processo, e o que faz cada função.
<?php //Primeiro setamos as variáveis //Tamanho da thumb, um valor inteiro, que corresponde à porcentagem. $Tamanho = 50; //Diretório onde estão as imagens $Fotos = "fotos/"; //Diretório onde serão criadas as Thumbs $Thumbs = "thumbs/"; //Seta qual tipo de arquivo será usado, no caso Jpg, Gif ou PNG $Ext = ".jpg"; //Seta a qualidade da Thumb $Qualidade = 95; //Vamos abrir o diretório das imagens $dh = opendir(($dir = "$Fotos")); //Agora vamos varrer todo o diretório à procura das imagens while (false !== ($filename = readdir($dh))) { //Verificamos se o arquivo é uma imagem de extensão igual á setada em $Ext if (strtoupper(substr($filename,-4)) != strtoupper($Ext)) { continue; } //Verificamos aqui com que tipo de imagem vai trabalhar if (strtoupper($Ext) == ".JPG") { $ExtFunc = "Jpeg"; } elseif (strtoupper($Ext) == ".GIF") { $ExtFunc = "Gif"; } elseif (strtoupper($Ext) == ".PNG") { $ExtFunc = "Png"; } //Criamos a imagem apartir da extensão setada em $ExtFunc //Concatenamos o valor de $ExtFunc para termos a função que criará a imagem //Podendo ser "ImageCreateFromJpeg" , "ImageCreateFromGif" ou "ImageCreateFromPng" $CriarImagemDe = "ImageCreateFrom" . $ExtFunc; $img = $CriarImagemDe($dir . $filename); //Aqui tiramos a proporção , o tamanho da thumb em relação à imagem //Pega largura da imagem $he = ImageSX($img); //Pega altura da imagem $wi = ImageSY($img); //Seta valor da largura da thumb $x = ($he / 100) * $Tamanho; //Seta valor da altura da thumb $y = ($wi / 100) * $Tamanho; //Aqui é criada a nova imagem, a thumb $img_nova = imagecreatetruecolor($x,$y); //Agora a nova imagem é redimencionada imagecopyresampled($img_nova, $img, 0, 0, 0, 0, $x, $y, $he, $wi); //Agora salvamos a Thumb no diretório especificado em $Thumbs, com a qualidade setada em $Qualidade //Para salvar a nova imagem, usaremos a função correspondente à extensão //Que pode ser "ImageJpeg" , "ImageGif" ou "ImagePng" , concatenando os valores Image + $ExtFunc $Image = "Image" . $ExtFunc; $Image($img_nova, $Thumbs . $filename . $Ext, $Qualidade); //Destruimos o cache da imagem para liberar uma nova thumb ImageDestroy($img_nova); ImageDestroY($img); } //Pronto todas as thumbnails foram criadas echo "Thumbnails Geradas com sucesso!"; ?>
Pronto, todas as thumbnails foram criadas com ótima qualidade.
O script não conta com nenhuma validação, com verificar se a imagem realmente é uma imagem válida, se existe o diretório onde estão as figuras ou onde serão gravadas as thumbnails, se a extensão é valida, dentre outras que julgo necessárias, ele apenas ilustra o processo de criação das imagens.
Fora isso espero que seja util.
o png criado não tem como ser vizualizado...
parece que cria corrompido....
parece que cria corrompido....
23/02/2008 6:42am
(~16 anos atrás)
é, o exemplo mostra como pegar um determinado tipo de imagem, não todas, depois posto um exemplo de como usar para todas...
27/07/2007 4:26am
(~17 anos atrás)
Bozo, eu saquei o pq do .gif não estar funcionando. é que a váriável $Ext já ta pré-definida com o .jpg... ae com .gif ele não funcionou. Pq eu troquei a xtensão da várivel pra .gif e ae funfou certinho... como resolver isso... Imagino eu que conseqüentemente a .png tbm não vá funcionar, a não ser que eu troque a $Ext pra png... enfim, se puder da uma luz ae... vlw
26/07/2007 7:55pm
(~17 anos atrás)
Bozo, agora que eu vi véio... o lance da extensão duplicada deu certo, não duplica mais... só que agora eu vi outro lance. Imagem com extensão .gif não está funcionando. não sei o pq... mas ele não cria a img pequena... com jpg funciona perfeitamente, mas .gif nao rolou... nem teste .png... o Que será que houve??
26/07/2007 7:14pm
(~17 anos atrás)
ao traduzir o erro, quando li direitinho, tinha visto que tinha esquecera de criar a pasta "thumbs".
um ótimo script está me ajudando muito.
parabéns Bozo pelo ótimo tutorial
um ótimo script está me ajudando muito.
parabéns Bozo pelo ótimo tutorial
24/07/2007 8:07am
(~17 anos atrás)
mensagem de erro
Warning: imagejpeg() [function.imagejpeg]: Unable to open 'thumbs/15810004.JPG' for writing in C:\xampp\htdocs\www\estudo\fotos\phpdesigner_tmp1.php on line 69
Warning: imagejpeg() [function.imagejpeg]: Unable to open 'thumbs/15810004.JPG' for writing in C:\xampp\htdocs\www\estudo\fotos\phpdesigner_tmp1.php on line 69
24/07/2007 7:58am
(~17 anos atrás)
Paulo, vai ver aconteceu a mesma coisa que aconteceu comigo, e ae eu mudei o chmod da pasta pra 777 e ficou tudo certo... muda ae e ve se vc consegue
23/07/2007 5:06pm
(~17 anos atrás)
Paulo Mardson
Acredito que isso é pq vc não tem permissão de escrita no diretorio Thumbs, mude a permissão desse diretorio...
Ricardo Augusto Pereira Gama
Não tinha reparado, mas basta retirar a variavel $Ext desta linha
//Troque
$Image($img_nova, $Thumbs . $filename . $Ext, $Qualidade);
//Por
$Image($img_nova, $Thumbs . $filename , $Qualidade);
Acredito que isso é pq vc não tem permissão de escrita no diretorio Thumbs, mude a permissão desse diretorio...
Ricardo Augusto Pereira Gama
Não tinha reparado, mas basta retirar a variavel $Ext desta linha
//Troque
$Image($img_nova, $Thumbs . $filename . $Ext, $Qualidade);
//Por
$Image($img_nova, $Thumbs . $filename , $Qualidade);
23/07/2007 4:30am
(~17 anos atrás)
Po bozo, eu baixei um monte, mas nenhum funciona do jeito que eu quero, entao estudei os lances dos arrays, e consegui fazer... vlw... se liga cara, eu usei esse seu script pra fazer as thunbs... deu certinho... mas só teve um problema cara... quando ele joga a foto pequena pra pastaque a gente quer,ele joga tranquilo, mas tem o seguinte. Ele joga com uma extensao do arquivo a mais... imagino eu pelo seguinte, a foto ja tem o nome dela. Ex.: foto1.jpg, Quando ele joga pra pasta pra ficar as thunbs ele joga pra lá assim: foto1.jpg.jpg ... Tem como resolver isso??? Vlw
22/07/2007 9:01am
(~17 anos atrás)
tentar criar um png qualquer no Paint e ver se cria corretamente, pode ser algum problema com o tipo do png...
verifica ai a versão do GD, pode ser outro problema.