Ubuntu は 12.04系です。Rubyで簡単な画像処理ができるRmagickの導入については↓の投稿を見てください。
Ruby で簡単な画像処理できるRMagickを導入する ヽ(゚ー゚ヽ)(ノ゚ー゚)ノわぁい - Qiita - http://goo.gl/BpXZIM
はい。ゲーム実況動画に毎日時間を取られてます。マイクラ、パズドラ、楽しいですね。最近は特にマイクラの動画がおすすめです。マイクラはマインクラフト(Minecraft)という箱庭ゲームで、LEGOブロックのような感じです。
さて、今回は、YouTube のプレイリストにサムネイルが無いのでプレイリストに登録されている動画のサムネイルからプレイリスト用のサムネイル画像をつくろう、という趣旨です。下のような画像をつくる。
10月15日に人気のあったゲーム実況動画のプレイリストをつくってみました。マックスむらいのAppBank系の動画が人気すぎ・・・小学生に大人気♪
前置きが長くなちゃったけど書いていくよ。
RMagick を使って複数の画像から1枚のタイル状の画像をつくる
ImageList#mosaic というメソッドを使うのがポイントです。
複数枚の画像の読み込み
最新のRMagickはURLからの読み込みにも対応しているよ♪4枚でやってみます。
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 を呼んで画像をつくるのがポイントです。
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