Como processe arquivos JPG usando o ImageMagick (Imagick API)? Estou recebendo uma exceção, nodecodedElegateForthisImageFormat, quando eu tento

StackOverflow https://stackoverflow.com/questions/2285161

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou usando o ImageMagick com a API do PHP Imagick para processar arquivos JPG enviados - no entanto, quando tento ler um blob ou até ler um arquivo físico, eu recebo um NoDecodeDelegateForThisImageFormat exceção.

Um exemplo do código que estou usando está abaixo:

private function resizeImageBlob($blob, $width, $height) {
    $image = new Imagick();
    $image->readImageBlob($blob);
    $image->resizeImage($width, $height, IMAGICK::FILTER_LANCZOS, 1);
    $resizedBlob = $image->getImageBlob();

    return $resizedBlob;
}

A imagem que a bolha representa é uma imagem JPG, mas o ImageMagick lança a exceção quando tenta ler a linha:

$image->readImageBlob($blob);

Alguém sabe por que isso pode estar acontecendo?

Foi útil?

Solução

Eu descobri a resposta para o meu problema. A razão pela qual a exceção estava ocorrendo foi de fato devido ao fato de a biblioteca não ter suporte de JPEG incorporado, mas a razão que isso aconteceu foi porque a versão do Imagick Php Extension e a versão da Biblioteca Imagemagick foram diferentes.

Uma boa maneira de garantir que não encontre esse problema é baixar a biblioteca ImageMagick e a extensão PHP Imagick, e observe especificamente as versões para ver que elas correspondem.

Como alternativa, você pode verificar a versão da sua extensão PHP Imagick na pasta PHP/EXT, habilitando -a no seu arquivo php.ini e usando

echo phpinfo();

Para verificar a versão da extensão. Em seguida, você pode baixar a mesma versão da biblioteca ImageMagick.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top