rubyからRMagickで加工してS3に画像をアップする。
RubyからS3に画像をアップするサンプルです。
普通はサムネイル画像などを作成してアップすると思いますが、意外とサンプルが無かったのでメモ代わりに書きます。
処理の順番としては、サーバーにある画像をRMagickで加工→バイナリでS3にアップします
S3にアップする方法は3通りほどありますが、今回はメモリ上にバイナリデータとして保持し処理を行います。(いままで、画像を加工してサーバーに一度保存してからS3にアップしてました・・・)
準備するもの
- AWSのアカウント
- S3バケットの準備
- imageMagicのインストール
- RMagickとaws-sdk
コード
require 'RMagick' require 'aws-sdk' AWS.config( :access_key_id => '************', :secret_access_key => '************' ) s3 = AWS::S3.new bucket = s3.buckets['my_bucket'] image = Magick::Image.read('image.png').first thumbnail_image = image.resize_to_fill('300', '300', Magick::NorthWestGravity).to_blob object = bucket.objects['s3_image.png'] object.write(thumbnail_image)
ここで重要なのは「to_blob」というメソッドです。
これを書くだけで、いけちゃいます。