Olá a todos mais uma vez,

Hoje vamos continuar a nossa iniciação à GDLib com PHP.

Depois de ontem termos aprendido os básicos, vamos agora avançar para um exemplo simples, com aplicação prática. Vamos criar um simples sistema de Thumbnails.

O objectivo deste post não é o de criar um sistema de thumbnails muito complexo, mas sim algo que dê as bases para a criação de um.

Antes de mais, e volto a repetir, para verem o funcionamento das funções que vou utilizar neste post, vão à página da documentação do PHP.

Neste post vamos utilizar esta maravilhosa foto da ilha da minha terra - as Berlengas. Foto

Neste pequeno exemplo vamos seguir este método:

Pegamos no lado maior da imagem, e reduzimo-lo até ter o tamanho de 200px. Pegamos nessa razão de redução e reduzimos também o outro lado menor, ficando assim com um thumbnail.

Simples Certo? Então vamos lá começar a codar!


header("Content-Type: image/jpeg");

// Nome do ficheiro a editar
$imagem = “berlengas.jpg”;

// Criar imagem a partir do ficheiro
$im = imagecreatefromjpeg($imagem);

// Mostrar imagem
imagejpeg($im);
imagedestroy($im);
?>
Com este exemplo vemos apenas a nossa imagem, ainda sem modificações, mas temos aqui uma função nova - imagecreatefromjpeg(). Esta função permite-nos criar uma imagem a partir de outra já existente, neste caso com compressão JPEG, não sendo necessário definir o seu tamanho.

Vamos agora determinar a largura e a altura da imagem, e em seguida ver qual das duas é maior.


header("Content-Type: image/jpeg");

// Nome do ficheiro a editar
$imagem = “berlengas.jpg”;

// Criar imagem a partir do ficheiro
$im = imagecreatefromjpeg($imagem);

// Determinar largura e altura
$largura = imagesx($im);
$altura = imagesy($im);

// Determinar qual dos dois é maior
$max = max($largura,$altura);

// Mostrar imagem
imagejpeg($im);
imagedestroy($im);
?>
Para determinar a largura e a altura da imagem usámos as funções imagesx() e imagesy() respectivamente.

Agora só nos falta mesmo reduzir a imagem.


header("Content-Type: image/jpeg");

// Nome do ficheiro a editar
$imagem = “berlengas.jpg”;

// Criar imagem a partir do ficheiro
$im = imagecreatefromjpeg($imagem);

// Determinar largura e altura
$largura = imagesx($im);
$altura = imagesy($im);

// Determinar qual dos dois é maior
$max = max($largura,$altura);

// Determinar a razão de redução
$tam_final = 200;
$razao = $tam_final / $max;

// Determinar largura e altura finais
$largura_final = $largura*$razao;
$altura_final = $altura*$razao;

// Reduzir a imagem
$im_final = imagecreatetruecolor($largura_final,$altura_final);
imagecopyresampled($im_final, $im, 0, 0, 0, 0, $largura_final, $altura_final, $largura, $altura);

// Mostrar imagem
imagejpeg($im_final);
imagedestroy($im_final);
imagedestroy($im);
?>
Penso que o código é bastante fácil de entender, mas aconselho a darem uma vista de olhos na documentação do PHP à função imagecopyresampled().

Resultado final:

Resultado Final

E pronto, temos o nosso simples sistema de thumbnails. Já podem ir mostrar aos pais, amigos e a quem quiserem, o que aprenderam hoje!

Estou a pensar finalizar esta Introdução à GDLib com apenas mais um artigo, mas qualquer para sugestão, seja ela para novo artigo, ou uma crítica, a caixa de comentários está aberta :)

Abraços,

Pedro Diogo

O Custódio, do blog DinheiroOportunidade.com, um blog sobre como ganhar dinheiro na internet, está a fazer um concurso com um prémio de 1000 Euros.  Eu estou a participar com este post, escrito aqui no blog e que é um dos meus melhores posts…