Wie verarbeiten ich jpg-Dateien ImageMagick (Imagick API) verwenden? Ich erhalte eine Ausnahme, NoDecodeDelegateForThisImageFormat, whenver ich versuche,
Frage
Ich bin mit ImageMagick mit der PHP Imagick API Prozess hochgeladen jpg-Dateien -. Aber wenn ich versuche, ein Blob zu lesen oder sogar eine physische Datei lesen, ich eine NoDecodeDelegateForThisImageFormat
Ausnahme erhalten
Ein Beispiel für den Code, den ich verwende, ist unten:
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;
}
Das Bild, das die Blob darstellt, ist ein JPG-Bild, aber ImageMagick wirft die Ausnahme, wenn es versucht, die Zeile zu lesen:
$image->readImageBlob($blob);
Weiß jemand, warum dies passiert sein könnte?
Lösung
dachte ich, die Antwort auf mein Problem heraus. Der Grund für die Ausnahme auftritt war in der Tat aufgrund der Tatsache, dass die Bibliothek nicht jpeg Unterstützung gebaut hat, aber der Grund, warum dies geschehen war, weil die Imagick PHP-Erweiterung Version und die Version der ImageMagick Bibliothek unterschiedlich war.
Ein guter Weg, sicher nicht machen in dieses Problem laufen soll sowohl die ImageMagick-Bibliothek und die Imagick PHP-Erweiterung herunterladen, und sucht gezielt die Versionen an, um zu sehen, dass sie zusammenpassen .
Alternativ können Sie die Version Ihres Imagick PHP-Erweiterung in den php / ext Ordnern überprüfen, indem es in der php.ini-Datei ermöglicht, und mit
echo phpinfo();
, um die Version der Erweiterung zu prüfen. Dann können Sie die gleiche Version der ImageMagick Bibliothek herunterladen.