Redimensionando imagem com PHP

Um exemplo de como redimensionar uma imagem mantendo a proporção com PHP.

Para este exemplo vamos usar o pacote


Requisitos de sistema

O pacote Intervention Image requer que os seguintes componentes funcionem corretamente.

  • PHP >= 5.4
  • Fileinfo Extension
  • GD Library (>=2.0) … ou … Imagick PHP extension (>=6.5.7)

  • Você pode verificar se tem as extensões instaladas usando a função phpinfo();  ou pode rodar o comando no terminal $ php -m.


    Instalação

    O melhor forma ou mais fácil e rápido de instalar o pacote é atravez do composerPara instalar a versão vais recente rode o seguinte comando.

    $ php composer.phar require intervention/image
    


    Agora o arquivo composer.json sera atualizado automaticamente e será criado/atualizado o arquivo vendor/autoload.php  com as bibliotecas (PSR-4 autoload)

    Uso

    Você precisa carregar o arquivo de autoload do composer para instanciar objetos como mostrado no exemplo a seguir.

    // inclui arquivo autoload
    require 'vendor/autoload.php';
    
    // importa a  Classe Intervention Image Manager 
    use Intervention\Image\ImageManager;
    
    // escolha do drive de imagem (imagick.gd)
    $manager = new ImageManager(array('driver' => 'imagick'));
    
    // Cria a instância
    $image = $manager->make('public/foo.jpg')->resize(300, 200);



    Redimensionar a imagem atual

    // cria instãncia
    $img = Image::make('public/foo.jpg')
    
    // redimensiona em um tamanho fixo 
    $img->resize(300, 200);
    
    // redimensiona apenas pela largura da image 
    $img->resize(300, null);
    
    // redimensiona apenas a altura
    $img->resize(null, 200);
    
    // redimensione a imagem para uma largura de 300 e restrinja a relação de (altura automática)
    $img->resize(300, null, function ($constraint) {
        $constraint->aspectRatio();
    });
    
    // redimensione a imagem para uma altura de 200 e e restrinja a relação de (largura automática)
    $img->resize(null, 200, function ($constraint) {
     $constraint->aspectRatio();


    Ver também