LoginSignup
72
82

More than 5 years have passed since last update.

Rails gem MiniMagick を利用して画像ファイルをリサイズする

Posted at

アップロードした画像のリサイズ等を簡単に実装出来る gem MiniMagick の設定、インストールを行う。

GitHub リポジトリ MiniMagick
( https://github.com/minimagick/minimagick )

※ インストールの方法から、利用方法までは上記 GitHub に全てまとまっています。

前提

バージョン
Ruby 2.1.1
Rails 4.2.0
MiniMagick 4.2.0

ImageMagick が必要となるので、事前に homebrew や、Cactuslab で配布しているパーーケージを用いてインストールを済ませておく。

CarrierWave を利用して、アップロードした画像をリサイズする想定で説明を進めるので、ファイルのアップロードについて、以下を先に読んでおくと良いかも。

Rails gem CarrierWave を利用してファイルをアップロードする

1. インストール

Gemfile へ MiniMagick を追記

Gemfile
gem 'mini_magick'

Gemfile をインストール。
( rails プロジェクト内に閉じた状態で gem をインストールしたいため --path オプションを利用 )

$ bundle install --path vendor/bundle

2. CarrierWave の uploader クラス修正

元画像の縦横比を維持したまま width を最大 300px、height を最大 200 pxにリサイズする。

app/uploaders/image_uploader.rb
process resize_to_limit: [300, 200]

元画像から width 100px, height 100px で切り抜きを行う。
第三引数で、切り抜きを行う際の中心点を指定。
( default: 'Center'; options: 'NorthWest', 'North', 'NorthEast', 'West', 'Center', 'East', 'SouthWest', 'South', 'SouthEast' )

app/uploaders/image_uploader.rb
process resize_to_fill: [100, 100, "Center"]

元画像の縦横比を維持したまま width を最大 300px、height を最大 200 pxにリサイズする。
リサイズ後のファイルが 300px × 200px になるよう、余白部分を指定色でぬりつぶす。
第三引数で塗りつぶしの色を指定。
第四引数で、余白が発生した際の画像の配置を指定。

app/uploaders/image_uploader.rb
process resize_to_limit: [300, 200, "#ffffff", "Center"]

サムネイル用、フォトギャラリー用等、別バージョンでリサイズした画像を作成する。

app/uploaders/image_uploader.rb
version :thumb do
  process resize_to_fill: [50, 50]

  # thumb.jpg という固定ファイル名で作成 ( full_filename メソッドをオーバーライド )
  def full_filename for_file
    "thumb.jpg"
  end
end

version :gallery do
  process resize_to_limit: [300, 200]

  # gallery.jpg という固定ファイル名で作成 ( full_filename メソッドをオーバーライド )
  def full_filename for_file
    "gallery.jpg"
  end
end

以上。

72
82
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
72
82