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
(~17 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.