Ruby - RMagick で画像情報取得!

Updated:


今回は、RMagick で画像の各種情報を取得する方法についてです。

RMagick とは、ImageMagick 画像処理ライブラリ等を Ruby から呼び出せるようにできるインターフェースの機能を持った RubyGems ライブラリです。

RMagick 以外にも画像の情報を取得できるライブラリ等はあるようですが、他の機能も含めトータルで考えて RMagick を使用することとしました。

0. 前提条件

  • Linux Mint 14 (64bit) での作業を想定。
  • Ruby 2.0.0-p247 で作業・動作確認。
  • 画像編集ソフト ImageMagick(当方は 6.7.7-10) インストール済み。

1. RMagick インストール

画像を扱える RubyGems ライブラリ RMagick をインストールする。

$ sudo gem install rmagick
$ gem list | grep rmagick
rmagick (2.13.2)

“Magic-config” が無いというエラーになる場合は、”libmagickcore-dev” も apt インストールする。
“MagickWand.h” が無いというエラーになる場合は、”libmagicwand-dev” も apt インストールする。

2. Ruby スクリプト作成

例として、以下のように画像の情報を取得する Ruby スクリプトを作成する。

File: rmagick_img_info.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
require 'RMagick'

# アニメーション GIF が考慮されて画像は配列で読み込まれるので、
# 配列の先頭画像を取得する。
img = Magick::Image.read("img_1.jpg").first
# 以下のように取得してもよい。
#img = Magick::ImageList.new("img_1.jpg")

# 画像情報取得
puts "FILENAME  : #{img.filename}"        # ファイル名
puts "FORMAT    : #{img.format}"          # フォーマット
puts "HEIGHT    : #{img.rows} px"         # 高さ
puts "WIDTH     : #{img.columns} px"      # 幅
puts "CLASSTYPE : #{img.class_type}"      # クラスタイプ
puts "DEPTH     : #{img.depth} bits/px"   # 深さ
puts "COLORS    : #{img.number_colors}"   # 色
puts "FILESIZE  : #{img.filesize} bytes"  # ファイルサイズ
puts "RESOLUTION: #{img.x_resolution.to_i}x#{img.y_resolution.to_i} " +
     "pixels/#{img.units == Magick::PixelsPerInchResolution ?
     "inch" : "cm"}"                      # レゾリューション
if img.properties.length > 0              # プロパティ
  puts "PROPERTIES:"
  img.properties do |name,value|
    puts "  #{name} = #{value}"
  end
end

3. Ruby スクリプト実行

情報を取得したい画像(”img_1.jpg”)を準備し、作成した Ruby スクリプトを実行してみる。
当方が使用した画像は以下のような画像。

RMAGICK_TEST

$ ruby rmagick_img_info.rb
FILENAME  : img_1.jpg
FORMAT    : JPEG
HEIGHT    : 480 px
WIDTH     : 640 px
CLASSTYPE : DirectClass
DEPTH     : 8 bits/px
COLORS    : 39335
FILESIZE  : 54982 bytes
RESOLUTION: 72x72 pixels/inch
PROPERTIES:
  date:create = 2013-08-23T21:45:13+09:00
  date:modify = 2013-08-23T20:40:01+09:00
  jpeg:colorspace = 2
  jpeg:sampling-factor = 2x2,1x1,1x1

参考サイト


今回一番欲しかった情報は画像のサイズですが、その他の情報も色々と取得できます。また、情報を取得するだけでなく画像を加工したりもできます。
何かと使えそうです。

以上。





 

Sponsored Link

 

Comments