我正在使用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开始时发生错误
答案 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 ,现在一切正常。