WideImage – Classe PHP que manipula Imagens
Redimensionar, recortar, marca d'água, escala de cinza, inverter cores.
Nesse post, vou mostrar como a classe WideImage pode ajudar com a manipulação de imagens. Quem nunca precisou manipular uma imagem? Todos sabem que é uma tarefa comum em um website, e que não é muito agradável, mas com a classe WideImage facilita bastante.
Com o WideImage pode-se:
- Redimensionar imagens
- Inserir marca d´agua
- Converter imagem em escala de cinza
- Converter imagem para negativa
- Cortar imagem
- Entre outras…
A utilização da classe requer alguns pré-requisitos, como, PHP 5.2 ou superior, GD2 do PHP ativado (que na versão 5 do PHP já vem ativado por padrão) e memória suficiente para carregar os arquivos de imagens.
- Baixe o WideImage no link
- Após baixar o arquivo WideImage, salve-o em uma pasta dentro do seu projeto, neste caso, será nomeado como “_wideimagem”, mas nada impede de escolher outro nome, portanto que lembre na hora de requerer a classe.
- O código a seguir mostrará como redimensionar e salvar uma imagem:
<?php // Chama o arquivo com a classe WideImage require('_wideimage/WideImage.php'); // Carrega a imagem a ser manipulada $image = WideImage::loadFromFile('_imagem/img.jpg'); // Redimensiona a imagem $image = $image->resize(400, 300); // Salva a imagem em um arquivo $image->saveToFile('_imagem/imgred.png'); // Mostra a imagem na tela $image->output('jpg', 90); ?>
Existem três tipos de redimensionamento, inside, outside, fill:
- Inside — Redimensiona a imagem para caber na largura e altura especificada, não distorcendo a imagem.
- Outside — Redimensiona a imagem para preencher a largura e altura especificada, não distorcendo a imagem.
- Fill — A imagem será redimensionada por completo, distorcendo a imagem.
No código anterior modifique a linha onde é redimensionado a imagem e coloque a seguinte linha.
$image = $image->resize(400, 300,'inside');
Altere das três formas para ver a diferença entre inside, outrside e fill.
Cortando a imagem
Existe um método na classe WideImage muito legal, o crop()
, que tem quatro parâmetros, coordenada X onde o corte se inicia, coordenada Y onde o corte se inicia, largura e altura do corte.
Veja o código de exemplo:
<?php // Chama o arquivo com a classe WideImage require('_wideimage/WideImage.php'); // Carrega a imagem a ser manipulada $image = WideImage::loadFromFile('_imagem/img.jpg'); // faz o recorte da imagem $image = $imagecrop->crop(0,0,247, 190); // Salva a imagem em um arquivo $imagecrop->saveToFile('_imagem/imgred.png'); // Mostra a imagem na tela $imagecrop->output('jpg', 90); ?>
Na maioria dos casos ninguém corta no canto da imagem, com isso vemos o poder do crop()
.
Altere a linha onde recorta a imagem pelo código abaixo:
$image = $imagecrop->crop('50% - 50', '50% -40',247, 190);
Se a imagem for muito grande, pode-se pegar um pedaço da imagem. Mas como fazer isso? Usando a função resize()
em conjunto com o crop()
.
Adicione a seguinte linha no arquivo:
$image = $image->resize(100, 80); $image = $imagecrop->crop('50% - 50', '50% -40',100, 80);
OBS: lembrando que aqui nos códigos são somente exemplos, você terá que pegar a dimensão correta de suas imagens.
Marca d'água (watermark)
Para aplicar marca d'água em uma imagem com a classe WideImage, basta usar o método merge()
.
O método merge()
da classe WideImage tem quatro parâmetros, primeiro a imagem que irá ser a marca d'água, segundo posição X, terceiro posição Y e o quarto opacidade da imagem.
Veja abaixo o código:
<?php $img = wideimage::load('_imagem/img.jpg'); $marca = wideimage::load('_imagem/img2.jpg'); $novaImagem = img->merge($marca, 10, 10, 30); $novaImagem->saveToFile('_imagem/ImagemMarca.jpg'); $novaImagem->output('jpg', 90); ?>
Note que a imagem ficou com uma marca d'água.
Mais informações sobre a classe podem ser vistas em http://wideimage.sourceforge.net/
Gostou do artigo? Ficou com dúvidas? Tem outras sugestões?
Deixe um comentário.
Forte Abraço e até a próxima!