更新をサボり続けたあげく、突然何の前触れもなくRuby on Railsのサンプルコードを知ったかぶって載せてみるテスト。
Ruby on RailsといいつつRailsは関係なくて単にRubyのコードのようです。
1枚の画像から3種類のサイズのサムネイルを作ります。
サイズごとにファイル名の先頭に"l_","m_","s_"のプレフィックスをつけます。
横サイズは指定されたサイズ、縦サイズは元画像の縦横比率を維持して計算されます。
動作環境はWindowsでRuby,ImageMagick,RMagickが必要です。
画像1個に対して複数枚のサムネイルを作るのにファイル名とサイズの対応が面倒じゃのう~って思ってたんだけど、そこはRubyという言語のすばらしさなのかシンプルに表現できた。
VBScript,VB.Net経験が長い自分にとってはこの辺が面白いところ。(しかしハマりどころでもある。カッコの使い方がわからないよ~)
個人的なポイント。
配列をこう宣言すると、
Ruby on RailsといいつつRailsは関係なくて単にRubyのコードのようです。
1枚の画像から3種類のサイズのサムネイルを作ります。
サイズごとにファイル名の先頭に"l_","m_","s_"のプレフィックスをつけます。
横サイズは指定されたサイズ、縦サイズは元画像の縦横比率を維持して計算されます。
動作環境はWindowsでRuby,ImageMagick,RMagickが必要です。
#!/C:\ruby\bin
require 'RMagick'
# 変換テーブル
sizes = {:prefix => "l_", :size_x=>400},
{:prefix => "m_", :size_x=>200},
{:prefix => "s_", :size_x=>100}
# 変換元ファイル
in_file1 = 'C:\\temp\\cat1.jpg'
in_file2 = 'C:\\temp\\cat2.jpg'
# 出力先フォルダ
out_dir = 'C:\\temp\\'
# RMagickのインスタンスを作成
images = Magick::ImageList.new(in_file1,in_file2)
# 画像の個数分繰り返し
images.each do | image |
# 変換後画像名を時刻で決める
out_file = Time.now.to_f.to_s
# 元画像の縦横サイズを取得
image_x = image.columns.to_f
image_y = image.rows.to_f
# 変換テーブルの個数分繰り返し
sizes.each do | size |
# 変換後サイズ(横:変換テーブルの値、縦:元画像の縦横比率で計算)
image_x_min = size[:size_x]
image_y_min = (image_y/image_x * image_x_min).round
# サイズ変換して保存
image.resize!(image_x_min, image_y_min)
image.write(out_dir + size[:prefix] + out_file + '.' +image.format)
end
end
画像1個に対して複数枚のサムネイルを作るのにファイル名とサイズの対応が面倒じゃのう~って思ってたんだけど、そこはRubyという言語のすばらしさなのかシンプルに表現できた。
VBScript,VB.Net経験が長い自分にとってはこの辺が面白いところ。(しかしハマりどころでもある。カッコの使い方がわからないよ~)
個人的なポイント。
配列をこう宣言すると、
sizes = {:prefix => "l_", :size_x=>400},
{:prefix => "m_", :size_x=>200},
{:prefix => "s_", :size_x=>100}
こう使えるのね。sizes.each do | size | p size[:prefix] + "," + size[:size_x].to_s endで、出力結果:
"l_,400" "m_,200" "s_,100"
コメントする