読者です 読者をやめる 読者になる 読者になる

Thanks Driven Life

日々是感謝

gnawrnip 更新しました

前回更新した時 から主に変わったことを書いていきます。

設定項目

今設定できるのはこの3つです。

Gnawrnip.configure do |c|
  c.frame_interval_ms = 1000
  c.make_animation = true
  c.max_frame_size = 1024 # pixel
end

前回から2つ減って1つ増えました。

追記

frame_intervalframe_interval_ms に変更しました。値の意味は変更無しです。

[Delete] photographer_driver

スクリーンショットのスライドショーを実現するために、以前は 「JavaScript」or「RMagick(ImageMagick) による動画GIFの生成」を行っていました。動き的には問題無かったのですが、以下の不満点が出てきました。

  • スライドが増えてくると一々最後(つまりエラーが出る瞬間)まで見続けてないといけない。
    • make_animation = false とするとエラーが出た瞬間の絵は見れるが、やはり過程を見たい時もある
  • そもそも imagemagick を使う機会が俺に無かった
    • もう js でいいじゃんってね……

なので今回(v0.2.0)からは JavaScript Only で行うことにしました。ImageMagick お疲れ様でした。 ちなみに使わせていただいたスライドショーライブラリは jQuery Cycle2 です。

イメージはこんな動きをします。

f:id:gongoZ:20131116213612g:plain

これで好きなフレームを好きなタイミングで好きなだけ見れるようになりました。デバッグ作業が捗るね!!

[Delete] frame_size [Add] max_frame_size

そもそも ImageMagick を使えるようにしていた理由は「画像載せまくってファイルサイズ増えるから、せめて動画GIFとかリサイズ可能にしてファイルサイズを少しでも減らせるように」みたいな用途でした。 で、今回 JavaScript で進めるってことで、この課題が放置されるのもちょっとなーと思ったので、とりあえず画像のリサイズ用に、新たに OilyPNG を使うようにしました。

数値の意味は簡単で、もしスクリーンショットのオリジナルのサイズが 640x480 で、 max_frame_size = 600 だったら、変換後は 600x450 になるってことです。480x640 だったら 450x600

width と height 同時に設定しなくなった理由は、俺が使わないからです。幅or高さの最大値として指定して そいつに集束してもらえればそれでよかったので。

ちなみに、最初は Pure RubyChunkyPNG を使ってたんですが、さすがに遅すぎたので。

参考までにどんだけ遅かったか

変換無し ChunkyPNG OilyPNG
6枚のスクリーンショット 24秒 2分53秒 27秒

そんなわけで

便利です