كيف يمكنني معالجة ملفات JPG باستخدام ImageMagick (Imagick API)؟ أحصل على استثناء ، nodeCodeDeDeleGateForthImageFormat ، عندما أحاول أن أحاول

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

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أستخدم ImageMagick مع PHP Imagick API لمعالجة ملفات JPG التي تم تحميلها - ومع ذلك ، عندما أحاول قراءة نقطة أو حتى قراءة ملف فعلي ، أحصل على ملف 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;
}

الصورة التي يمثلها النقطة هي صورة JPG ، لكن ImageMagick ترمي الاستثناء عندما تحاول قراءة السطر:

$image->readImageBlob($blob);

هل يعرف أي شخص لماذا قد يحدث هذا؟

هل كانت مفيدة؟

المحلول

لقد اكتشفت إجابة مشكلتي. السبب في حدوث الاستثناء كان بالفعل بسبب حقيقة أن المكتبة لم يكن لديها دعم JPEG مدمج ، ولكن السبب في حدوث ذلك هو أن إصدار Extension PHP Imagick ونسخة مكتبة ImageMagick كانت مختلفة.

هناك طريقة جيدة للتأكد من عدم مواجهة هذه المشكلة وهي تنزيل كل من مكتبة ImageMagick وملحق PHP Imagick ، وننظر على وجه التحديد إلى الإصدارات لترى أنها تتطابق.

بدلاً من ذلك ، يمكنك التحقق من إصدار امتداد PHP الخاص بك في مجلد PHP/EXT عن طريق تمكينه في ملف php.ini الخاص بك ، واستخدام

echo phpinfo();

للتحقق من إصدار الامتداد. بعد ذلك ، يمكنك تنزيل نفس الإصدار من مكتبة ImageMagick.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top