Instalando imagick no Debian como extensão PHP

O ImageMagick® é um software que permite editar, criar, converter e trabalhar com imagens bitmap em mais de 200 diferentes formatos (PNG, JPEG, TIFF, GIF, etc), ele tem uma licença de distribuição Apache 2.0 que permite a distribuição dele como binário ou em softwares com código aberto ou proprietário.

Como extensão PHP, o ImageMagick ou imagick provê as classes: Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator e ImagickKernel. Particularmente nunca trabalhei puramente com as classes dessas extensão, mas segundo o WordPress no sistema deles a extensão melhora a qualidade das imagens adicionadas na biblioteca, adiciona um redimensionamento inteligente de imagens pequenas e o suporte as miniaturas de PDF.

Instalar a extensão no Debian e derivados é bem fácil, só exige o restart do Servidor/FastCGI Process Manager do PHP, no meu ambiente com Debian e PHP 7.3 é como no exemplo:

sudo apt-get update
sudo apt-get install php-imagick
sudo nginx -s reload
sudo /etc/init.d/php7.3-fpm restart

Para verificar a instalação do imagick basta criar um arquivo PHP com a função phpinfo();.

Se a extensão tiver sido carregada corretamente ela vai aparecer na listagem de extensões

Recortando e fazendo upload de imagens com preview usando o Croppie.js + PHP

PHP Logo
PHP Logo

Sobre o Croppie: É uma biblioteca que se propõe a ser leve, rápida e simples nas funções de recortar e fazer pequenas alterações nas imagens no client-side.

Com base nos exemplos da documentação do Croppie, eu fiz um exemplo mostrando como usar um pouco do croppie.js para fazer upload de imagens recortadas para o server-side, usando PHP, e por meio do método .ajax() do jQuery para fazer requisições assíncronas.
Continuar lendo “Recortando e fazendo upload de imagens com preview usando o Croppie.js + PHP”

Fatal error: Uncaught Error: Call to undefined method stdClass::

Esse erro ocorre quando você está tentando usar um método de uma classe que não foi definida, ele é similar ao  Fatal error: Uncaught Error: Class, mas ele pode ocorrer de uma forma muito sutil, programando no Phalcon Framework por exemplo quando você faz uma busca dessa forma:



$bar = new Class();
$bar = Class::findFirst(); //retorna um objeto ou false se não tive resultado
$bar->delete(); // Fatal error se o método acima retornar false


No código acima se você utilizar o método de Class no objeto sem verificar se foi retornado um objeto de fato, ele irá causar esse erro, logo, a correção é: verificar se o objeto continua sendo o mesmo objeto ao longo da execução das instruções.