Redimensionar imagens no PHP com a biblioteca Imagine

Por Aristides Neto - 22/03/2020

php

Fala pessoal tudo beleza?

Hoje o assunto é manipulação de imagens com PHP.

Imagine é uma biblioteca OOP (Programação Orientada a Objetos) para manipulação de imagens criada no PHP 5.3. Usa as melhores práticas de desenvolvimento com um design cuidadoso permitindo um código desacoplado e testável.

É um projeto open source, caso queira contribuir veja mais clicando aqui.

Imagine unifica as bibliotecas ImageMagick, GraphicsMagick e GD, de forma orientada a objetos e de uma maneira muito simplista. Isso significa que você deve ter pelo menos uma dessas bibliotecas instaladas no seu ambiente.

Com ela você pode criar miniaturas de imagens, cortar, girar, redimensionar, inverter e até criar uma imagem composta.

Requisitos

Em nosso exemplo vamos usar a biblioteca GD, então certifique-se se possui instalada. Para instalar execute o comando abaixo e substitua a versão do seu PHP:

sudo apt install php7.4-gd

Instalação da Imagine

Para a instalação vamos utilizar o composer, em seu terminal digite o comando:

composer require imagine/imagine

Iniciando com Imagine

Precisamos importar a classe ou as classes para começar a manipular as imagens. Vamos utilizar o autoload do composer para importar as classes:

<?php

require 'vendor/autoload.php';

$imagine = new Imagine\Gd\Imagine();

Caso queira baixar os arquivos desse exemplo, deixei no meu GitHub, acesse esse repositório e clone na sua máquina. Os exemplos abaixo estão no arquivo index.php.

No próprio repositório há uma descrição melhor para que possa executar os exemplos.

Resize

O redimensionamento de imagens é o mais comum entre aplicações web, muito utilizado para gerar Thumbnails. Veja como é fácil:

<?php 

$imagine = new Imagine\GD\Imagine;

// Abre a imagem original
$image = $imagine->open(__DIR__ . '/email.png');

// Obtém o tamanho real da imagem
$size = $image>getSize();

// Resize da imagem definindo 450px de largura
$image->resize($size->widen(450))
    ->save(__DIR__ . '/images/email_resize.png');

Rotação

Rotacione a imagem de uma forma simples. Veja para rotacionar em 90 graus.

<?php 

$imagine = new Imagine\GD\Imagine;

// Abre a imagem original
$image = $imagine->open(__DIR__ . '/email.png');

// Rotaciona em 90 graus
$origin->rotate(90)
    ->save(__DIR__ . '/images/email_rotate.png');

Cortar

Corte a imagem baseado em um ponto inicial e seu tamanho. O método crop() deve receber dois parâmetros indicando posição e tamanho da imagem.

Nesse caso, será utilizada a classe Point para informar a posição e a classe Box para informar o tamanho da “caixa” que será cortada.

<?php

$imagine = new Imagine\GD\Imagine;

// Abre a imagem original
$image = $imagine->open(__DIR__ . '/email.png');

// Corta a imagem
$origin->crop(new Point(10,90), new Box(150, 150))
    ->save(__DIR__ . '/images/email_crop.png');

Este artigo foi bem ao ponto!

Essas são algumas das opções que podemos utilizar com a biblioteca Imagine. Acesse a documentação para conhecer mais e veja o quanto é simples trabalhar com manipulação de imagens no PHP.

Até próxima!

Aristides Neto

Programador web focado no back-end, mas esforçado no front. Entusiasta em gerenciamento de servidores Linux, impressionado com a automatização de processos e provisionamento de máquinas.