RMagick - ImageMagick gives the error "no decoding delegate for this image format"

The problem occurs when I try to manipulate an image downloaded from Sinatra.

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

The uploaded file is a jpeg, form data when the image upload includes

 {: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"} 

And also ImageMagick has the necessary delegates

 convert -list configure 

returns

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

So, I should be able to load and convert jpeg, but it whines about delegates. I am also working on Mac OSX 10.7, maybe another weird issue with mac

+8
ruby imagemagick rmagick
source share
1 answer

I found a solution for me:

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

I assume that the problem arises because rmagick is trying to determine the type of image from the file extension. But the downloaded file has no extension. Good luck

+8
source share

All Articles