Uma dúvida muito comum entre os programadores PHP de projetos em geral é: o que usar quando é necessário manipular imagens em PHP. Alguns indicam utilizar a extensão GD e o Imagick, entre outras bibliotecas. Hoje vamos falar um pouco sobre uma dessas bibliotecas. O Intervention Image.
Essa biblioteca abstrai alguns recursos do GD e do Imagick por exemplo e você pode utilizá-los como a “engine” da biblioteca, escolhendo o de sua preferência para realizar as transformações da imagem.
Requerimentos:
- PHP >=5.4
- Fileinfo Extension
Bibliotecas de Imagem Suportada:
- GD Library (>=2.0)
- Imagick PHP extension (>=6.5.7)
Vamos então colocar a mão na massa e ver como funciona. Criamos uma pasta imagePhp e executamos o composer require da biblioteca
composer require intervention/image
No meu caso eu já tenho a extensão GD instalada no meu php. Sendo assim foi sugerido que eu instalasse a extensão imagick caso eu quisesse usar o imagick como “engine”. Daí fica ao seu gosto.
Então, vamos utilizar a imagem abaixo como base
A image1.png está em 1920×1200, a primeira coisa que podemos fazer é redimensionar a imagem. Para isso, basta utilizarmos o seguinte código: imageResize.php
<?php // incluindo o autoload de classes require 'vendor/autoload.php'; // importando a classe Manager do Intervention Image use Intervention\Image\ImageManager; // instanciando um gerenciador de imagem com a "engine" escolhida (GD no caso) $manager = new ImageManager(array('driver' => 'GD')); // lendo a image1.png, redimencionando para 300x200 e salvando como image2.png $image = $manager->make('image1.png')->resize(300, 200)->save('image2.png');
E o resultado é a image2.png
Agora vamos por exemplo escrever um texto no topo da imagem. Para isso, usaremos o método text(). No arquivo imageText.php
<?php // incluindo o autoload de classes require 'vendor/autoload.php'; // importando a classe Manager do Intervention Image use Intervention\Image\ImageManager; // instanciando um gerenciador de imagem com a "engine" escolhida (GD no caso) $manager = new ImageManager(array('driver' => 'GD')); // lendo a image2.png $image = $manager->make('image2.png'); // escrevendo o texto "O topo do mundo" na posição x=200px e y=10px e definindo atributos da font $image->text('O topo do mundo',200,10, function($font) { $font->size(20); //defininindo o tamanho como 20 $font->color('#ffffff'); //definindo a cor como branco $font->align('right'); //definindo o alinhamento como centralizado })->save('image3.png'); //salvando como image3.png
Agora vamos colocar uma marca d’água na imagem. Vamos utilizar a imagem abaixo como marca d’água.
Agora é só criarmos o imageWatermark.php
<?php // incluindo o autoload de classes require 'vendor/autoload.php'; // importando a classe Manager do Intervention Image use Intervention\Image\ImageManager; // instanciando um gerenciador de imagem com a "engine" escolhida (GD no caso) $manager = new ImageManager(array('driver' => 'GD')); // lendo a image3.png $image = $manager->make('image3.png'); // colocando a watermark.png como marca d'água da imagem $image->insert('watermark.png'); //salvando como image4.png $image->save('image4.png');
E então teremos como image4.png
Além desses métodos apresentados, o Intervention Image possui muitos outros métodos que podem ser vistos na documentação oficial.
Espero que tenham gostado do Intervention Image e fique mais fácil manipular imagens com o PHP.