Boa noite a todos!
Estou desenvolvendo um site para uma instituição sem fins lucrativos – que dentro em breve estará na página Trabalhos – onde eu deveria criar uma galeria de fotos, então, resolvi deixar o maior trabalho para o sistema e não para o usuário, ou seja, a única ação do usuário seria escolher a foto e o sistema faria o redimensionamento, diminuiria a qualidade e faria um thumbnail.
Fiz algumas pesquisas e encontrei uma classe muito interessante que faz tudo parecer muito fácil, o nome da classe, como esperado, é “Thumbnail”! Clique aqui para conferir a página da classe.
Bom, depois de fazer o download, basta fazer um include da classe no seu código e começar a brincar com ela. Dentre várias coisas que ela faz, as mais interessantes são:
- Redimensionamento para um máximo de width e/ou height
- Redimensionamento por porcentagem do tamanho original
- Recorta a imagem a partir do centro dela
- Recorta a imagem
- Gira a imagem
- Cria um reflexo estilo Apple™
Aqui vai um exemplo da classe em funcionamento para que você possa entender melhor:
< ?php
include_once('thumbnail.inc.php');
$thumb = new Thumbnail('exemplo.jpg');
$thumb->resize(250,250);
$thumb->cropFromCenter(100);
$thumb->save('caminho/para/o/arquivo.jpg',80);
?>
Essas 5 linhas de código carregam a imagem, redimensionam para um máximo de 250px de width e 250px height, recortam um quadrado de 100px por 100px à partir do centro e salvam no local desejado com 80% de qualidade. Fantástico não? O resultado é um thumbnail perfeito!
Outras funções são as seguintes:
//Recortar a imagem
$thumb->crop(0,0,100,50);
//Girar a imagem em 90º em sentido horário
$thumb->rotateImage();
//Girar a imagem em 90º em sentido anti-horário
$thumb->rotateImage('CCW');
//Criar um reflexo estilo Apple™
$thumb->createReflection(40,40,80,true,'#a4a4a4');
Se você quer ver um exemplo da classe em ação, clique aqui.
Espero que esse post tenha sido útil.
Dúvidas? Utilize o campo de comentário logo abaixo.
Abraços!






Parabens pelo código…
aproveitando o que vc usa para mostrar os codigos…
esse plugin, qual é o nome?
abs
Ducca
Responder
Olá Thiago,
Obrigado pelo comentário!
Esse é o dp.SyntaxHighlighter, muito bom!
Dê uma olhada no site do projeto:
http://www.dreamprojections.com/syntaxhighlighter
Abraços!
Responder
Olá Pedro! Parabéns pelo post… Estou precisando d uma ajudinha para aplicar isso no meu script usando banco numa consulta sql (recordset), vc tem algum exemplo?
Estava usando este anteriormente:
$objDynamicThumb1 = new tNG_DynamicThumbnail("", "KT_thumbnail1");
$objDynamicThumb1->setFolder("images/produtos/");
$objDynamicThumb1->setRenameRule("{RsListaOfertas.foto}");
$objDynamicThumb1->setResize(200, 160, true);
$objDynamicThumb1->setWatermark(false);
Mas quero usar com o giro…Obrigado
Responder
Olá Eliézer,
Não entendi muito bem o que você está querendo. Você está usando a classe que passei no post?
Abs!
Responder
Oi Pedro, 1º já agradeço pela atenção…Essa classe q eu estava usando é da extensão DeveloperToolBox do dreamweaver…Mas quero usar essa nova função para manipular melhor a imagem. Mas ainda ñ consegui saber como usa-la numa consulta SQL de um recordset do dreamweaver.
Eu estava usando assim c/ a ADDT:
//RECORDSET:
mysql_select_db($database_adega_divino, $adega_divino);
$query_RsListaOfertas = "SELECT /*AQUI OS CAMPOS*/ ORDER BY RAND()";
$RsListaOfertas = mysql_query($query_RsListaOfertas, $adega_divino) or die(mysql_error());
$row_RsListaOfertas = mysql_fetch_assoc($RsListaOfertas);
$totalRows_RsListaOfertas = mysql_num_rows($RsListaOfertas);
// Show Dynamic Thumbnail da ADDT:
$objDynamicThumb1 = new tNG_DynamicThumbnail("", "KT_thumbnail1");
$objDynamicThumb1->setFolder("images/produtos/");
$objDynamicThumb1->setRenameRule("{RsListaOfertas.foto}");
$objDynamicThumb1->setResize(200, 160, true);
$objDynamicThumb1->setWatermark(false);
//HTML:
<img src="<?php echo $objDynamicThumb1->Execute(); ?>">
A grande dúvida é como adaptar a sua nova função usando essa mesma consulta acima? Obrigado.
Responder
Eliézer,
O que você pega no banco? O caminho da imagem, certo?
Com o caminho dela é só fazer como está no post.
Abraços!
Responder
Parabéns sempre com ótimos artigos, sabendo que vc sempre colabora com seus leitores gostaria de aproveitar o espaço para ver se poderia postar um artigo sobre a manipulação de imagem com jcrop; consigo fazer o formulário para enviar a imagem registrar no banco de dados mas não consigo gravar a região selecionada….
Responder
Pedro Teixeira respondeu:
10 de maio de 2010
@Rodrigo,
Me desculpe mas ainda não tive a oportunidade de usar o Jcrop, mas deixei aqui como sugestão do post e quando surgir um tempo vou dar atenção para ele.
Obrigado pela sugestão!
Abraço!
Responder
Blz…
Essa semana tbm estou cheio de coisa e tive que abandonar ele, mas vou tentar na próxima semana e se funcionar mando pra vc…
Acho que pra vc não terá muito segredo…
Obrigado
Responder
Pedro Teixeira respondeu:
11 de maio de 2010
@Rodrigo,
Perfeito, se eu tiver um tempo te dou uma força.
Abraço!
Responder
Olá amigo, o link esta com erro, vc teria outro link para indicar?
Responder
Pedro Teixeira respondeu:
20 de janeiro de 2011
@Rihard,
Aparentemente o link está certo, mas acho que o site está fora do ar.
Abraço!
Responder
vc tem em algum outro local o arquivo para dowload?
Responder
Pedro Teixeira respondeu:
20 de janeiro de 2011
@Rihard,
Infelizmente não….
Responder
Oi Pedro tudo bem? Me tira uma dúvida, com essa classe é possível eu recuperar o arquivo de imagem vindo de um formulário?
Estou fazendo uns testes mas até agora não tive êxito. No código onde se chama o arquivo de imagem estou colocando dessa forma:
$thumb = PhpThumbFactory::create($_FILES['arquivo']); // No caso ‘arquivo’ é o nome do campo do formulário. Mas não está funcionando. Estou começando agora com o PHP, tenho certeza que a solução está debaixo do meu nariz, mas não consegui ver ainda.
Agradeço se poder me ajudar.
Abraços
Responder
Eduardo Martins respondeu:
09 de março de 2011
@Eduardo Martins, Caramba achei a solução! basta colocar assim:
$imagem = $_FILES['arquivo']['tmp_name']; ao invés de $imagem = $_FILES['arquivo'];
Que sirva para os colegas que estiverem com algum problema parecido
Responder
Pedro Teixeira respondeu:
09 de março de 2011
@Eduardo Martins,
Sim, mas para isso você não precisa da classe.
Abraço!
Responder
Eduardo Martins respondeu:
09 de março de 2011
@Pedro Teixeira, Oi Pedro, para o script final eu acho que terei a necessidade da classe sim. Vê só, estou tentando fazer um sistema onde terá um slide logo na index. As imagens desse slide serão cadastradas pelo usuário. Então eu quero que esse sistema tenha a facilidade do usuário colocar uma imagem que não seja nas proporções corretas. Mas que o sistema faça isso pelo usuário.
Exemplo: O carinha cadastrou um imóvel e a imagem para o slide que ele cadastrou é de 1024×768. Só que o espaço para o slide será de 980×360. Então o script vai pegar a imagem que o usuário cadastrou e vai redimensionar no espaço de 980×360 e isso eu sei que a classe faz.
Portanto como disse, para o script final eu vou necessitar da classe.
Aproveitando o post e mudando um pouco de assunto, acho que a classe que você usou no artigo que escreveu é diferente da atual no site da própria classe.
E não sei se essas mudanças afetaram em alguma funcionalidade, eu tentei salvar um arquivo reduzindo a qualidade como você faz no exemplo, mas não salva nem amarrado pelos nuvêlos.
Responder
Pedro Teixeira respondeu:
10 de março de 2011
@Eduardo Martins,
Com certeza a classe já está em uma nova versão, por isso passei o link dela: http://phpthumb.gxdlabs.com/
Lá você consegue a documentação atualizada: https://github.com/masterexploder/PHPThumb/wiki
Abraço!
Responder