2012-02-28 45 views
8

當我嘗試操縱從sinatra上傳的圖像時,會出現此問題。RMagick - ImageMagick給出錯誤「沒有解碼代理此圖像格式」

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 

回報

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

所以, 我應該能夠上傳和轉換一個jpeg,但它會對代表提出質疑。 還我工作在Mac OSX 10.7,可能與MAC

+0

另外我安裝了imagemagick與brew – gkaykck 2012-02-28 10:08:33

回答

8

另一個奇怪的問題,我發現解決方案對我來說:

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

我想,出現問題的原因是rmagick嘗試通過文件擴展名來定義圖像類型。但上傳的文件沒有擴展名。 祝你好運!

+0

美麗,謝謝。 – 2012-10-31 04:25:05

相關問題