2012-02-28 21 views
8

El problema ocurre cuando trato de manipular una imagen cargada desde sinatra.RMagick - ImageMagick da el error "no hay decodificador delegado para este formato de imagen"

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

El archivo subido es un archivo JPEG, los datos del formulario al cargar la imagen incluye

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

Y también ImageMagick tiene los delegados necesarios

convert -list configure 

vuelve

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

Así , Yo debería ser capaz de cargar y transformar un jpeg, pero se queja de los delegados. También estoy trabajando en Mac OS X 10.7, tal vez otro problema extraño con mac

+0

también estoy instalado imagemagick con brew – gkaykck

Respuesta

8

he encontrado solución para mí:

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

supongo problema se produce porque RMagick tratar de definir el tipo de imagen mediante la extensión de archivo. Pero archivo cargado sin extensión. ¡Buena suerte!

+0

Hermoso, gracias. –

Cuestiones relacionadas