Как мне обработать файлы jpg с помощью ImageMagick (IMagick API)? Я получаю исключение, NoDecodeDelegateForThisImageFormat, всякий раз, когда я пытаюсь - PullRequest
0 голосов
/ 18 февраля 2010

Я использую ImageMagick с PHP IMagick API для обработки загруженных файлов jpg - однако, когда я пытаюсь прочитать Blob или даже прочитать физический файл, я получаю исключение NoDecodeDelegateForThisImageFormat.

Ниже приведен пример кода, который я использую:

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;
}

Изображение, которое представляет BLOB-объект, является изображением jpg, но ImageMagick выдает исключение при попытке прочитать строку:

$image->readImageBlob($blob);

Кто-нибудь знает, почему это может происходить?

1 Ответ

1 голос
/ 18 февраля 2010

Я разобрался с ответом на мою проблему. Причина, по которой происходило исключение, действительно была связана с тем, что в библиотеке не было встроенной поддержки jpeg, но причина этого состояла в том, что версия расширения php Imagick и версия библиотеки ImageMagick были разными.

Хороший способ избежать этой проблемы - загрузить библиотеку ImageMagick и расширение php Imagick, и, в частности, посмотреть версии, чтобы убедиться, что они соответствуют .

В качестве альтернативы, вы можете проверить версию вашего расширения php Imagick в папке php / ext, включив его в файле php.ini и используя

echo phpinfo();

чтобы проверить версию расширения. Затем вы можете загрузить ту же версию библиотеки ImageMagick.

...