خطأ Rmagick/ImageMagick "لا مندوب فك تشفير هذا تنسيق الصورة" مع Ruby Tempfile

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

سؤال

أواجه مشكلة في استخدام Rmagick/ImageMagick لفتح ملف تم تحميله من خلال نموذج القضبان. أعتقد أن هذا يرجع إلى حقيقة أن سلوك القضبان tempfile هو القضاء على تمديد الملف. من ما قرأته ، يجب أن يفضل ImageMagick استخدام الرقم السحري بدلاً من تمديد الملف لاكتشاف تنسيق ملف الصورة ، ولكن لا يبدو أن هذا هو الحال في التثبيت. أنا أقوم بفعل هذا:

img = Magick::Image.read(full_size_image.path)

عندما يكون Full_size_image هو كائن TempFile الذي يتم إرجاعه من وحدة تحكم نموذج التحميل ، والذي يخلق خطأً مثل:

لا يوجد مندوب فك تشفير هذا تنسيق الصورة `/var/bolders/ui/uisldaxohkixkwyfutws4 ++++ ti/-tmp-/rackmultipart20101031-10144-1Hiwlw-0 ' @ error/readimage/532

يحدث هذا على Mac OS X 10.6 مع Rails 2.3.8 و Rmagick 2.13.1 و ImageMagick 6.6.5-5. لقد أكدت أن ImageMagick يمكنه تحويل الملف الذي كنت أستخدمه للاختبار من خلال نموذج التحميل بنجاح ، وأن مسار/ملف TempFile موجود بالفعل/يمكن قراءته.

أظن أنه إما أ) شيء ما في تثبيت ImageMagick الخاص بي هو منعه بطريقة أو بأخرى من استخدام الرقم السحري لاكتشاف نوع الملف (؟؟ - الحصول على ImageMagick على Snow Leopard من المصدر كان مغامرة نفسها) أو ب) هناك حالات فقط حيث هذه الحالات لا يعمل وأحتاج بطريقة ما إلى جعل TempFile الحفاظ على امتداد الملف الأصلي.

أعلم أنه يمكنني الحصول على اسم الملف الأصلي من كائن TempFile ، لكنني لم أجد طريقة لإعادة تسمية الملف. أفترض أنه يمكنني صنع بعض kludge حيث أستخدم كائن ملف وإنشاء نسخة من tempfile بطريقة أو بأخرى مع الامتداد الأصلي عليه ، لكن هذا يبدو غير صحيح. ما هي الطريقة الصحيحة لحل هذه المشكلة؟

شكرا لمساعدتك.

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

المحلول

لقد اكتشفت المشكلة - تم تعيين متغير بيئة DYLD_LIBRARY_PATH بشكل صحيح في قذيفي حيث كنت أختبر إصدار سطر الأوامر من Convert ولكن لم يتم تعيينه بشكل صحيح حيث كان خادم Mongrel يعمل. بعد أن أصلحت هذا ، بدأت العمل.

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