1

我正在尝试从 amazon s3 获取图像,用 Rmagick 做一些事情,然后将图像上传回 s3。我正在尝试使用 right_aws 和 RMagick/mini_magick 来做到这一点。到目前为止,我还没有运气。通过使用命令行对其进行测试,Imagemagick 似乎已正确安装。

这是我目前正在尝试做的事情:

使用 right_aws 抓取图像并存储为 RightAws::Key:

s3 = RightAws::S3.new(ID, Secret)
bucket = s3.bucket( 'baneling')
key = RightAws::S3::Key.create(bucket, 'flower.jpg')

然后我试图将 key.data 转换为图像文件。如果我尝试使用以下代码使用 mini_magick

image = MiniMagick::Image.read(key.data)

或者

image = MiniMagick::Image.read(key.public_link)
#key.public_link is public s3 url to image. i.e. https://s3.amazonaws.com/bucket.flower.jpg

我收到此错误:

MiniMagick::Invalid: MiniMagick::Invalid
from /home/adnan/.rvm/gems/ruby-1.9.3-p194/gems/mini_magick-3.4/lib/mini_magick.rb:164:in `create'

如果我尝试使用 RMagick:

Magick::Image.from_blob(key.data)

或者

image = Magick::ImageList.new  
urlimage = open(key.public_link, 'rb')
image.from_blob(urlimage.read)

我收到此错误:

Magick::ImageMagickError: no decode delegate for this image format `' @ error/blob.c/BlobToImage/360

有人知道我在做什么错吗?我尝试了各种图像,包括 jpg 和 png。我正在使用 rails 3.2.3、ruby 1.9.3p194、ubuntu 11.04、right_aws 3.0.4、rmagick 2.13.1、mini_magick 3.4。

4

0 回答 0