Como gerar thumbs de imagens em php
Em diversos momentos, prescisamos realizar o redimencionamento de fotos em nossas aplicações WEB.
Abaixo segue um exemplo de upload de arquivo para o servidor usando nossa presciosa função do php o move_upload_file.
E uma pequena função que recebe uma imagem e gera outra, com a nova largura especificada, a altura é automaticamente calculada para manter a proporçãoem relação à imagem original. A imagem é redimensionada mantendo-se a qualidade de 100% (válido especialmente para o formato JPEG).
Qualquer duvida é so postar galera. Abraços e até mais…
1º Passo: Bem aqui é o nosso arquivo que será responsavel pela criação do nosso thumb.
Arquivo: functionThumb.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php 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); } } ?> |
2º Passo: Aqui criaremos um simples formulário html para envio da nossa foto.
Arquivo: formulario.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<form method="post" action="salva_foto.php" enctype="multipart/form-data" >
<div align="center">
<table width="700" border="0" bgcolor="#f1f1f1">
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td colspan="2"><br></td>
</tr>
<tr>
<td width="131">Arquivo:</td>
<td width="298"><input type="file" name="arquivo" class="txt"></td>
</tr>
<tr>
<td width="131"> </td>
<td width="298"><input type="submit" value="enviar" class="btn"></td>
</tr>
<tr>
<td width="131"> </td>
<td width="298"> </td>
</tr>
</table>
<input type="hidden" name="e" value="1">
</form> |
3º parte: Realizo o upload do arquivo, e salvo os dados da foto e seu thumb em nossa base de dados.
Arquivo: salva_foto.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php require("connect.php"); //incluo o arquivo de conexão no banco require("functionThumb.php"); //incluo o função do thumb if(!empty($_FILES['arquivo']['name'])){ //Se existir arquivo para Upload eu faço o mesmo $ext =explode(".", $_FILES['arquivo']['name']); $nome= mktime().mt_rand(1,100).".".$ext[1]; //Pego a extenção do arquivo move_uploaded_file($_FILES['arquivoPDF']['tmp_name'],"arquivos/$nome"); }else{ $nome= null; } $nomeThumb="thumb".mktime().mt_rand(1,100).".".$ext[1].""; //Passo o nome do novo Thumb $tamanho=200; //O tamanho da foto $foto="arquivos/".$nome; //o caminho da foto e seu nome geraThumb($foto, nomeThumb, $tamanho); //chamo a função passando os parametros mysql_query("INSERT INTO fotos ( foto, thumb ) VALUES ( '".$nome."', '".$nomeThumb."' )"); //Insiro os dados no nosso banco de dados ?> |
7 Responses to “Como gerar thumbs de imagens em php”
Seu Comentário


Webcrazy on março 15th, 2009
Cara 10 este POST, com certeza será de muita utilidade para uso de minhas novas aplicações. Continue postando assim amigo.
christian on março 15th, 2009
mto bom o topico… estava precisando disso mesmo valeuuu
Roberto on maio 31st, 2009
Cara otimo artigo, muito boa esta função
leandro on fevereiro 26th, 2010
Olá amigo, consegui executar o arquivo, mas ele não salvou na pasta o thumb gerado, só a foto orginal, poderia me ajudar?
valeu abraço!
leandro on fevereiro 26th, 2010
Opa, consegui, lindo script, falta de atenção minha. valeu! abraço!
Andre.zip on março 8th, 2010
A dica seria, você informar no nome do thumb o caminho desejado para a foto exemplo ( $thumb = ‘fotos/$nome’; )
Abração
leandro on abril 9th, 2010
perfeito, muito obrigado André. Abraço!