Back-End

9 fev, 2018

Manipulando imagens em PHP com o Intervention Image

Publicidade

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.