RMagick / ImageMagick ошибка "нет делегата декодирования для этого формата изображения" с Ruby Tempfile - PullRequest
1 голос
/ 01 ноября 2010

У меня проблема с использованием RMagick / ImageMagick для открытия файла, загруженного через форму Rails. Я считаю, что это связано с тем, что поведение Rails Tempfile заключается в устранении расширения файла. Из того, что я прочитал, ImageMagick должен предпочитать использовать магическое число, а не расширение файла, чтобы определить формат файла изображения, но в моей установке это не так. Я делаю это:

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

где full_size_image - это объект Tempfile, возвращаемый из контроллера формы загрузки, который создает ошибку вроде:

делегат без декодирования для этого формата изображения `/ var / folder / uI / uIsldaxoHkiXKWYFuTWs4 ++++ TI / -Tmp- / RackMultipart20101031-10144-1hiwlw-0 '@ error / constitute.c / ReadImage / 532

Это происходит в Mac OS X 10.6 с Rails 2.3.8, RMagick 2.13.1 и ImageMagick 6.6.5-5. Я подтвердил, что ImageMagick может преобразовать файл, который я использовал для успешного тестирования через форму загрузки, и что путь / файл временного файла действительно существует / доступен для чтения.

Я подозреваю, что либо а) что-то в моей установке ImageMagick каким-то образом мешает ему использовать магическое число для определения типа файла (?? - заставить ImageMagick работать над Snow Leopard из исходного кода было само приключением), либо б) есть только случаи, когда это не работает, и мне как-то нужно, чтобы Tempfile сохранил исходное расширение файла.

Я знаю, что могу получить исходное имя файла из объекта Tempfile, но я не нашел способа переименовать файл. Я полагаю, я мог бы создать некоторый kludge, где я использую объект File и каким-то образом создать копию Tempfile с исходным расширением, но это просто кажется неприличным. Как правильно решить эту проблему?

Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 01 ноября 2010

Я выяснил проблему - переменная окружения DYLD_LIBRARY_PATH была правильно установлена ​​в моей оболочке, где я тестировал версию convert для командной строки, но не была правильно установлена ​​там, где работал мой сервер Mongrel. После того, как я это исправил, все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...