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 を使用しています。