Ruby-on-rails-2.1-rails-and-rmagick

提供:Dev Guides
移動先:案内検索

Ruby on Rails 2.1-RMagickガイド

Railsは、人気のある安定したCライブラリである_ImageMagick_および_GraphicsMagick_へのバインディングを提供します。 RMagickライブラリは、ImageMagickとGraphicsMagickに対して同じインターフェイスを提供するため、どちらを使用しても問題ありません。

Unixにrmagick genをインストールするか、Windowsにrmagick-win32 gemをインストールすると、 RMagick を取得できます。 次のようにUnixマシンにインストールしましょう-

$ gem install rmagick
RMagick モジュールには、_Magick
Image_クラスが付属しており、4つの異なる方法で画像のサイズを変更できます-
  • サイズ変更(幅、高さ)
  • スケール(幅、高さ)
  • サンプル(幅、高さ)
  • サムネイル(幅、高さ)

これらのメソッドはすべて、必要なサムネイルの幅と高さ(ピクセル単位)に対応する整数値のペアを受け入れます。

_resize()_メソッドを使用して画像のサイズを変更する例を次に示します。 ファイル tmp.jpg を取り、幅100ピクセル、高さ100ピクセルのサムネイルを作成します-

require 'rubygems'
require 'RMagick'

class ImageController < ApplicationController

   def createThubnail
      width, height = 100, 100

      img =  Magick::Image.read('tmp.jpg').first
      thumb = img.resize(width, height)

      # If you want to save this image use following
      # thumb.write("mythumbnail.jpg")

      # otherwise send it to the browser as follows
      send_data(thumb.to_blob, :disposition => 'inline', :type => 'image/jpg')
   end
end

サムネイルを作成する手順は次のとおりです-

  • ここで、クラスメソッド_Image.read_は引数として画像ファイル名を受け取り、Imageオブジェクトの配列を返します。 その配列の最初の要素を取得します。これは明らかに_tmp.jpg_イメージです。
  • 次に、目的の引数を使用してメソッド resize を呼び出して、サムネイルを作成します。 *最後に、この画像をブラウザに向けています。 メソッド_thumb.write( "mythumbnail.jpg")_を使用して、このイメージをローカルにマシンに保存することもできます。

画像形式の変換

イメージファイルをある形式から別の形式に変換するのは非常に簡単です。* RMagick *は非常にスマートに処理します。 ファイルを読み込んで、別の拡張子で書き込むことができます。

次の例では、JPEGファイルをGIFファイルに変換します-

require 'rubygems'
require 'RMagick'

class ImageController < ApplicationController

   def changeFormat

      img =  Magick::Image.read('tmp.jpg').first

      # If you want to save this image use following
      # img.write("mythumbnail.gif")

      # otherwise send it to the browser as follows
      send_data(img.to_blob, :disposition => 'inline', :type => 'image/gif')
   end
end

次のように、要件に基づいて形式に画像を変更できます-

img = Magick::Image.read("tmp.png").first
img.write("tmp.jpg")                 # Converts into JPEG
img.write("tmp.gif")                 # Converts into GIF
img.write("JPG:tmp")                 # Converts into JPEG
img.write("GIF:tmp")                 # Converts into GIF