没有这种图像格式的编码委托@ error / construct.c / WriteImage / 1153

时间:2012-12-05 13:12:44

标签: ruby-on-rails amazon-s3 amazon-web-services imagemagick rmagick

我正在使用Paperclip,ImagMagick,Rmagick,Amazon-s3

从网址获取图片并在自定义调整图片大小后将更改后的图片替换为亚马逊时,我收到此错误。

Magick :: ImageMagickError(此图像格式没有编码委托//s3.amazonaws.com/beu-dev/temp_images/final_images/000/000/377/original/template_37720121205-5921-99989h.png' @ error/constitute.c/WriteImage/1153): app/models/temp_image.rb:38:in写' 第38行是此方法结束前的最后一行

def reprocess_final_image
    image_file_url = self.final_image.url(:original).split('?')[0]
    thumb = Magick::Image.read(image_file_url).first
    thumb.format = "PNG"
    thumb.crop_resized!(240,200, Magick::NorthWestGravity)
    **thumb.write(image_file_url)** ***Line#38***
  end

注意:还有一件事这个代码在使用系统文件系统时非常有效,但是当使用amazon s3开始时发生错误

2 个答案:

答案 0 :(得分:0)

我认为您需要使用本地文件名而不是URL。 Imagemagick不能只通过http将文件写入URL。要替换源文件,您需要使用Amazon S3 API。

thumb.crop_resized!(240,200, Magick::NorthWestGravity)
thumb.write(local_temp_file_name)

# abstract Amazon S3 API. Use your favorite API
S3Object.store(local_temp_file_name, open(local_temp_file_name)) 

答案 1 :(得分:0)

问题解决了。
1.检查"识别 - 列表格式"

如果您未在列表中看到 .jpeg格式。然后,您需要添加 .jpeg库


卷曲-O http://www.ijg.org/files/jpegsrc.v8c.tar.gz

tar zxvf jpegsrc.v8c.tar.gz
cd jpeg-8c/
./configure
make

Sudo make install
现在重新安装 imagemagick ,现在一切正常。