RMagick - ImageMagick выдает ошибку «нет делегата декодирования для этого формата изображения» - PullRequest
9 голосов
/ 28 февраля 2012

Проблема возникает, когда я пытаюсь манипулировать изображением, загруженным из sinatra.

File.open(params[:file][:tempfile]) do |p|
   thumb = Magick::Image.read(p)
   thumb.crop_resized!(75, 75, Magick::NorthGravity)
end

Загруженный файл в формате JPEG, данные формы при загрузке изображения включают

{:filename=>"299732_176749115737355_100002068035867_380115_618512842_n.jpg",    :type=>"image/jpeg", :name=>"file", :tempfile=>#<File:/var/folders/hf/d6vx6vg56nbd5n44jjrp84k80000gn/T/RackMultipart20120228-55947-1fd2l6c>, :head=>"Content-Disposition: form-data; name=\"file\"; filename=\"299732_176749115737355_100002068035867_380115_618512842_n.jpg\"\r\nContent-Type: image/jpeg\r\n"}

А также у ImageMagick есть необходимые делегаты

convert -list configure

1010 * возвращается *

DELEGATES     bzlib freetype jpeg jng jp2 lcms png tiff x11 xml zlib

Итак, я должен иметь возможность загружать и преобразовывать JPEG, но он жалуется на делегатов. Также я работаю на Mac OSX 10.7, может быть, еще одна странная проблема с Mac

1 Ответ

9 голосов
/ 11 апреля 2012

Я нашел решение для меня:

tmpfile = params[:file][:tempfile]
image = Magick::ImageList.new
bin = File.open(tmpfile, 'r'){ |file| file.read }
img = image.from_blob(bin)

Полагаю, проблема возникает из-за того, что rmagick пытается определить тип изображения по расширению файла.Но загруженный файл без расширения.Удачи!

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