LoginSignup
12

More than 5 years have passed since last update.

Ruby で複数枚の画像を一枚にタイル状にまとめた画像をつくるよ - RMagick の mosaic 使います - ヽ(゚ー゚*ヽ)(ノ*゚ー゚)ノわぁい

Last updated at Posted at 2014-10-16

Ubuntu は 12.04系です。Rubyで簡単な画像処理ができるRmagickの導入については↓の投稿を見てください。

:laughing: Ruby で簡単な画像処理できるRMagickを導入する ヽ(゚ー゚ヽ)(ノ゚ー゚)ノわぁい - Qiita - http://goo.gl/BpXZIM

はい。ゲーム実況動画に毎日時間を取られてます。マイクラ、パズドラ、楽しいですね。最近は特にマイクラの動画がおすすめです。マイクラはマインクラフト(Minecraft)という箱庭ゲームで、LEGOブロックのような感じです。

さて、今回は、YouTube のプレイリストにサムネイルが無いのでプレイリストに登録されている動画のサムネイルからプレイリスト用のサムネイル画像をつくろう、という趣旨です。下のような画像をつくる。

サムネイル

10月15日に人気のあったゲーム実況動画のプレイリストをつくってみました。マックスむらいのAppBank系の動画が人気すぎ・・・小学生に大人気♪

【ゲーム実況動画】10月15日の人気ゲーム実況動画

前置きが長くなちゃったけど書いていくよ。

RMagick を使って複数の画像から1枚のタイル状の画像をつくる

ImageList#mosaic というメソッドを使うのがポイントです。

複数枚の画像の読み込み

最新のRMagickはURLからの読み込みにも対応しているよ♪4枚でやってみます。

hoge.rb
imageUrls = ["http://img.youtube.com/vi/e6xuxo6Xrs0/mqdefault.jpg",
            "http://img.youtube.com/vi/BCgUx8kdwY4/mqdefault.jpg",
            "http://img.youtube.com/vi/NNpOTng4b40/mqdefault.jpg",
            "http://img.youtube.com/vi/Pse_-UTWFlM/mqdefault.jpg"]
images = Magick::ImageList.new 
imageUrls.each do |url|
  images.read(url)
end # imageUrls.each

こんな感じで、ImageListをnewした後に read で画像を読み込みます。new の引数に複数書けるんだけど、Arrayは渡せないのが少しはまりポイントです、Arrayは参照わたしにする必要があります(whiteleaf7@github さんに教えていただきました、ありがとうございます)。

Magick::ImageList.new("hoge.png","huga.png")

はOK

images = ["hoge.png","huga.png"]
Magick::ImageList.new(*images)

もOK

images = ["hoge.png","huga.png"]
Magick::ImageList.new(images)

は駄目よ

補足:YouTube動画のサムネイル画像のURL

いくつか形式があるけど↓のような感じで[videoId]が動画ID

タイル状の画像をつくる

うまいこと page で位置を指定した上で、mosaic を呼んで画像をつくるのがポイントです。

hoge.rb
tile = Magick::ImageList.new
page = Magick::Rectangle.new(0,0,0,0)
images.scene = 0

2.times do |i|
  2.times do |j|
    tile << images.scale(0.7)
    page.x = j * tile.columns
    page.y = i * tile.rows
    tile.page = page
    (images.scene += 1) rescue images.scene = 0
  end
end
image = tile.mosaic
image.write("tile.png")

できたかな? images.scale(0.7) は1辺の長さが半分になるように縮小しているのです。Googleの計算機で 0.5^0.5 とかしてうまいことルートを計算して出します。

できた!ヽ(゚ー゚ヽ)(ノ゚ー゚)ノわぁい

ヾ(・д・`)いい歳して「わぁい」とかガキ

さんこう

RMagick example: mosaic.rb - http://goo.gl/jcSqpt
https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=0.5%5E0.5

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
12