Railsでcarrierwaveを使って画像ファイルのアップロード

ファイルのアップロード用ライブラリとしてよく使われるCarrierWaveを使って簡単アップロードを紹介します。

CarrierWaveをインストール

$vi Gemfile

Gemfileに下記を書いてライブラリを追加します。

gem 'Carrierwave'

ライブラリをインストールします。

$bundle install

基本的な使い方

まずはcarrierwaveを使えるようにします。

アップロード用のクラスの生成

$rails generate uploader image

するとImageUploaderというクラスが作られます。

 create  app/uploaders/image_uploader.rb

画像のURLを保存するテーブルの列を追加

$ rails g migration add_image_to_テーブル名 image:string

modelsのファイルに付け加えます。

attr_accessible  :image  
mount_uploader :image, ImageUploader  

viewsの変更

・_formに付け足します。

<%= form_for ?????, :html => {:multipart => true} do |f| %>
…
<%= f.file_field :image %>
…
<% end %>

・画像を表示させるページに付け足します。

<%= image_tag ????.image_url.to_s %>

????はオブジェクト変数を入れます。

これで画像ファイルをアップロードして表示できるようになります。

Rmagickのインストール

1個1個、画像サイズを調節するのは大変なので、自動で画像調整してくれるrmagickをインストールします。

ImageMagickのインストール

yumでインストールしてもいいのですが、rmagickの新しいバージョンはImageMagickの6.4.9以上が必要なのでソースからインストールします。

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz
cd ImageMagick-*.*.*
./configure
make
make install

でImagemagickがインストール完了。
※ubuntu系編
ubuntuの場合はapt-getで簡単インストールが完了です。

sudo apt-get install libmagick9-dev imagemagick libgraphicsmagick3 graphicsmagick

Rmagickのインストール

gem install rmagick

でRmagickがインストールされます。

サムネイル画像を表示させる。

Rmagickをインストールすることで自動でサイズを調整した画像を作れるようになりました。
rails上でRmagickを使い、サイズの調整ができるように設定します。
・app/uploader/image_uploader.rb

include CarrierWave::RMagick
…
version :thumb do
  preocess :resize_to_limit=> [200, 200]
end
def scale(width, height)

end

scaleの数字でサイズを調整できます。

サムネイル画像の表示。
・show.html.erb

<%= image_tag ????.image_url(:thumb).to_s %>

で自動調整した画像を表示することができるようになります。

1 COMMENT

railsで作る管理画面

[…] carrierwaveを使って画像をアップロードできるよう(詳しく)にしたら、modelにimageカラムを追加し 下記のようにフォームを作ることでimageを追加できるようにできます。 […]

返信する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です