Redimensionar imagens no PHP com a biblioteca Imagine
Veja como é fácil manipular imagens com o PHP através de uma biblioteca. Redimensione, corte, rotacione com Imagine
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!