new takyam();

Qiitaぽい話はQiitaに書いていくことにする気がする http://qiita.com/takyam

phantomjsで大きいページをレンダリングする時はトリミングしたほうが良い

phantomjsでキャプチャをとる時に、ページがあまりにも大きいとCPUを長時間食いまくるので、単純なサムネイル的にキャプチャ取りたいだけならサイズを制限してレンダリングした方がよいです。

Backbone.jsのサイトとかキャプチャしようとすると、死にます。

WIDTH = 1024
HEIGHT = 768
OUTPUT_PATH = '/tmp/cap.png'
page.viewportSize = { width: WIDTH, height: HEIGHT }
page.open address, (status) ->
  if status isnt 'success'
    console.log 'Unable to load the address!'
    phantom.exit 1
  else
    window.setTimeout (->
      page.clipRect = {left: 0, top:0, width: WIDTH, height: HEIGHT}
      page.render(OUTPUT_PATH)
      phantom.exit()
    ), 200

ほぼサンプルどおりなのですが、page.render()の前にpage.clipRectでrender()の範囲を制限しているのがポイントです。