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 imagemExiste 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!
Fonte:www.ideiasprogramadas.com.br