読者です 読者をやめる 読者になる 読者になる

めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

Paperclipを使って正方形の画像を作る

Rails

Railsで画像アップと生成を楽したい、と思いまして「HerokuでAmazon S3に画像をアップロードする - めも帖」というのを書いていました。その後、正方形の画像が欲しいと思うようになりました。
Paperclipは、ImageMagickを利用して色々とできそうなので、設定してみました。そのまえに、ImageMagickのコマンド考えました。

ImageMagickのコマンド

  • 長辺が100pxの画像を作る
    • 極端な画像だと、短辺が100px以下になってしまうので注意
  • gravityで中央に位置合わせ
  • cropで切り抜き
convert 1.jpg -resize 100x100 -gravity Center -crop 75x75-0-0 1.png

設定したモデル

  • Photoというモデルに設定
  • Amazon S3を利用
  • アソシエーションは、気にするな
class Photo < ActiveRecord::Base
  attr_accessible :description, :name, :status, :photo, :shop_id

  belongs_to :shop
  has_and_belongs_to_many :items
  has_many :reviews

  has_attached_file :photo,
   :styles => {
   :square => "200x200",
   :thumb  => "100x100",
   :medium => "200x200",
   :large  => "600x400"
 },
   :convert_options => {
   :square  => "-gravity Center -crop 150x150+0+0"
 },
   :storage => :s3,
   :s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
   :path => ":attachment/:id/:style.:extension"

  #
  scope :possible, where('status = 1')
  scope :one, limit(1)
end

結果

  • 150pxの正方形画像ができる
テンプレート
<%= image_tag @photo.photo(:square) %>
イメージ画像