Redimensionar imagem em PHP usando a biblioteca de imagens de intervenção
Você está procurando como redimensionar imagens em PHP? Enquanto trabalhamos no aplicativo da web, precisamos criar diferentes versões em miniatura da imagem original. A miniatura é a versão redimensionada de sua imagem original. Neste artigo, estudamos como fazer upload e redimensionar imagens em PHP.
Por que devemos redimensionar imagens?
No site, existem vários cenários em que precisamos exibir uma versão resumida de uma imagem grande. Um exemplo popular é a Galeria de imagens. Na galeria, costumávamos exibir uma lista de pequenas imagens. Quando um usuário clica na imagem pequena, ele abre a imagem grande no pop-up. Outro exemplo é a exibição de artigos relacionados, em que mostramos pequenas imagens junto com o título e a descrição de uma postagem.
Nesses cenários, precisamos gerar uma pequena imagem (miniatura) usando nossa imagem original. Uma pequena miniatura reduz o tamanho de suas páginas. Como você está usando uma pequena miniatura, o navegador requer pouca largura de banda para carregar a imagem. Isso adicionará alguns benefícios ao site. Alguns deles são:
- Melhora o desempenho do servidor
- Reduza a largura de banda
- Melhore a velocidade da página
Dito isso, vamos dar uma olhada em como redimensionar a imagem em PHP.
Começando
Intervention Image é uma biblioteca de código aberto que atua como uma ferramenta de redimensionamento de imagens. Sob o capô, Intervention Image usa GD Library e Imagick para processamento e manipulação de imagens.
Para começar, você precisa instalar a biblioteca de imagens de intervenção em seu aplicativo. Eu recomendo usar o Composer para a instalação de uma biblioteca.
Abra o terminal no diretório raiz do seu projeto e execute o comando abaixo.
composer require intervention/image
Depois de instalar a biblioteca, você precisa incluir seu ambiente em seu aplicativo. Para isso, inclua abaixo de duas linhas o arquivo PHP.
<?php
// include composer autoload
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
Para fazer o upload e redimensionar a imagem, precisamos de um formulário onde se possa navegar pela imagem e clicar no botão enviar. Use o HTML abaixo que contém a entrada do arquivo e um botão de envio.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" /></p>
<input type="submit" name="submit" value="Submit">
</form>
Redimensionar imagem em PHP usando imagem de intervenção
Instalamos a biblioteca e criamos um formulário. Em seguida, temos que fazer o upload e redimensionar a imagem na hora. Vou criar dois diretórios uploads
e thumbnails
. Na uploads
pasta, vamos armazenar a imagem original. A versão em miniatura da imagem será armazenada dentro do thumbnails
diretório.
Use o código abaixo que armazenará a versão original e em miniatura da imagem nos diretórios uploads
e thumbnails
, respectivamente.
<?php
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
if (isset($_POST['submit'])) {
if (in_array($_FILES['image']['type'], $allowed_mime_type)) {
if (!file_exists('uploads')) {
mkdir('uploads', 0755);
}
$filename = time().'_'.$_FILES['image']['name'];
$filepath = 'uploads/'. $filename;
move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
if (!file_exists('uploads/thumbnails')) {
mkdir('uploads/thumbnails', 0755);
}
$thumbnailpath = 'uploads/thumbnails/'. $filename;
$img = Image::make($filepath);
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
$img->save($thumbnailpath);
}
}
No código acima, passei a largura como 300 e redimensionei a imagem mantendo sua proporção. Você pode passar o valor da largura de acordo com sua exigência. Manter a proporção do aspecto é recomendado ao redimensionar a imagem. Usando a relação de aspecto, a imagem não será esticada. No entanto, se você está procurando um corte difícil, substitua as linhas abaixo
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
Com
$img->resize(300, 150)->save($thumbnailpath);
Conclusão
Neste tutorial, estudamos como redimensionar imagens mantendo sua proporção. Também escrevemos um código que cortará a imagem com força. A biblioteca de imagens de intervenção fornece mais algumas opções para um resize
método. Você pode ler mais sobre isso em sua documentação.
Artigos relacionados
- Redimensionar imagem no Laravel usando a biblioteca de imagens de intervenção
- Redimensionar imagem em PHP usando TinyPNG
- Arrastar e soltar o upload de arquivos usando JavaScript e PHP