+1

Thumbnails com tamanho fixo sem estragar a imagem PHP OO

criado por Ibrahim S. M. Brumate em 29/10/2010 3:23pm
Fiz uma classe simples para gerar thumbnails de imagens gif, jpg, png, wbmp e bmp.

É necessário que a biblioteca GD2 e a EXIF estejam habilitadas para que o script funcione corretamente. Apartir da versão 1.0.8 também é necessário a biblioteca CURL.

Com 4 a 7 linhas de código você será capaz de gerar um thumbnail perfeito sem perder ou esticar a imagem, apenas utilizando esta classe.

A mesma pode ser utilizada quando se faz uploads de imagens facilitando a vida na hora de gerar galeria de fotos.

Fiz comentários na classe para que vocês possam entender facilmente o que se passa na mesma e também alterar se for o caso.

Quanto ao bmp devido ao PHP não ter função nativa que trate eu pesquisei algumas funções no google e fóruns e criei uma classe adicional para que fosse possível trabalhar com bmp também.

Esta classe eu mantive os comentários de cada desenvolvedor.
Fiz apenas alguns ajustes para utilizar em conjunto com a minha classe.

Crédito das funções BMP ao qual utilizei para fazer minha classe:
http://excellent-coder.blogspot.com
http://100net.mirrors.phpclasses.org/browse/author/343232.html

A partir da versão 1.0.2 já é possível utilizar o script também com
imagens BMP.

A partir da versão 1.0.5 já tem novas formas de dimensionar, transparência em gif e png a imagem, centraliza imagem em thumbs de formato irregular e requer que sejam setados alguns parâmetros a mais.

A versão 1.0.6 também centraliza imagem de acordo a largura ou altura definida em thumbs onde não se sabe ou X ou Y que será utilizado.

A versão 1.0.8 também possibilita jogar as thumbs em outra pasta, fazer
thumbs de uma URL qualquer de imagem e fazer com que uma página php vire
uma imagem para que possa ser exibida em um <img src="" /> por exemplo.

A versão 1.1.0 também possibilita fazer crop das fotos via php e crop automático centralizando o recorte e mantendo a proporção da imagem.

Espero que esta classe seja útil a todos.
Data Autor Changelog Download
29/10/2010 3:47pm Ibrahim S. M. Brumate Versão 1.0.0 Versão 1.0.0
03/11/2010 9:13am Ibrahim S. M. Brumate Versão 1.0.1 Versão 1.0.1
04/11/2010 11:41am Ibrahim S. M. Brumate Versão 1.0.2 Versão 1.0.2
20/01/2012 3:08pm Ibrahim S. M. Brumate Versão 1.0.3 Versão 1.0.3
05/03/2012 2:51pm Ibrahim S. M. Brumate Versão 1.0.4 Versão 1.0.4
23/03/2012 1:18pm Ibrahim S. M. Brumate Versão 1.0.5 Versão 1.0.5
01/11/2012 9:14am Ibrahim S. M. Brumate Versão 1.0.6 Versão 1.0.6
09/01/2014 10:32am Ibrahim S. M. Brumate Versão 1.0.7 Versão 1.0.7
24/03/2014 10:41am Ibrahim S. M. Brumate Versão 1.0.8 Versão 1.0.8
12/01/2015 11:54am Ibrahim S. M. Brumate Versão 1.0.9 Versão 1.0.9
12/01/2015 12:56pm Ibrahim S. M. Brumate Versão 1.1.0 Versão 1.1.0
11/06/2015 2:42pm Ibrahim S. M. Brumate Versão 1.1.1 Versão 1.1.1

Comentários:

Mostrando 1 - 10 de 11 comentários
A parte da cURL no Windows deve se copiar as biliotecas libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll para o diretório C:\Windows\System32 e para o diretório Apache24\bin (no meu caso apache2\bin, pois faço tudo manualmente), daí funciona de boa.

A php_curl.dll está dentro da pasta de extensões (ext) do PHP, as outras ficam no diretório principal.
Parabéns de novo e abraços.
21/05/2015 7:27pm (~9 anos atrás)

Obrigado. Fico feliz em poder ser útil facilitando o uso de thumbnails no PHP. Abraços.
21/05/2015 11:37am (~9 anos atrás)

A classe é inteligente. Caso você precise criar mais de uma thumbnail (de diferentes tamanhos) de uma mesma imagem ele não vai substituir a thumbnail anterior. Se ainda estiver tendo problemas com a instalação do cURL de uma olhada no google em tutoriais que explicam como fazer isso ou utilize algum facilitador como XAMPP, Wamp, Vertrigo e etc.
21/05/2015 11:33am (~9 anos atrás)

Mas independentemente disso, meus parabéns, principalmente quanto à parte do redimensionamento de imagens .bmp.
21/05/2015 10:54am (~9 anos atrás)

Vamos lá, no Windows deve se copiar as biliotecas libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll para o diretório C:\Windows\System32 e para o diretório Apache24\bin e reiniciar o Apache, lógico.
Estas bibliotecas estão no diretório do PHP. Estou usando o PHP 5.6.2.

Só uma dúvida (eu ainda não me detive a olhar o código), porque cria duas cópias da imagem redimensionada (nova_imagem.jpg ou bmp e nova_1_imagem.jpg ou bmp)?
21/05/2015 10:27am (~9 anos atrás)

Julio, pelo erro gerado, a biblioteca CURL não foi habilitada corretamente.
A classe foi testada antes de ser publicada e funciona normalmente se o CURL estiver habilitado corretamente. De uma olhada no google em tutoriais que explicam como fazer isso ou utilize algum facilitador como XAMPP, Wamp, Vertrigo e etc.
21/05/2015 9:32am (~9 anos atrás)

Ao executar o arquivo teste_outra_pasta.php gera o mesmo erro anterior.

E ao executar o arquivo teste_curl.php gera o erro "Fatal error: Call to undefined function curl_init() in C:\apache2\www\htdocs\projeto\thumbClass.php on line 171".

As imagens estão no lugar certo e os caminhos estão corretos também.
21/05/2015 9:14am (~9 anos atrás)

Ao executar o arquivo teste.php gera o erro " [0] => A Biblioteca cURL deve estar ativada. Habilite a php_curl.dll no php.ini", porém a biblioteca está habilitada no php.ini e as dlls ssleay32.dll e libeay32.dll estão presentes.
21/05/2015 9:01am (~9 anos atrás)

sempre usei imagecopyresized mais vou textar o resampled pra ver oq da =]
http://www.thalleslazaro.net
08/11/2010 3:06pm (~13 anos atrás)

Grato pela dica amigo Takiguti.

Realmente a função imagecopyresampled é melhor.
Optei por substituir uma vez que as duas tem a
mesma utilidade. Caso alguém por algum motivo
prefira a resized basta baixar a primeira versão.

Abraços.
03/11/2010 9:16am (~13 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)