Entries tagged “Webkit”

WebShot 2009

written by shn, on May 21, 2009 10:09:00 PM.

昨日の夜中に突然ウェブページのSnapShotを撮るサーバが欲しくなった。SBMのサイトによくある奴。FreeBSD / Linuxでやりたいのよね。

先人の知恵を探すのだが、良い検索語がわからない。「Webnailと呼ばれているらしい」ということでGoogleさんに聞いてみたら「もしかして: Webmail」とか言われて死にたくなった。結局 "Webpage screenshot"とかで良かったよ。

んで探すと良く出てくるのがXvfb + firefoxの組み合わせ。2006年のSimpleAPIの時にみなこぞって作ってたらしく、その頃の話が出てくる。 この方法は、Firefoxを使っているので、いろいろな通知系を殺さないといけないのと、そもそもonLoadのイベントが取れないからsleepを適当にやってからScreenshot撮るってのがぜんぜんだめ。

んでもうちょっと探すと、Xvfb + QtWebKitを使った話がでてきた。これだとonLoadのイベントが取れる。

試してみたら、かなり簡単に撮れて拍子抜け。PortsでXorg + Qt一式のビルドに3、4時間かかったけどな!

元コードをちょっと弄って、scrollbarを消してみた

frame = self.page.mainFrame()
# hide menu bar
frame.setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
frame.setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)

縦長のScreenShotを撮るには baseSize = QSize(800, 600) # まず基準となるサイズにする self.page.setViewportSize(baseSize) # contentSizeの方が多きかったら(スクロールバーが出てたら) contentSize = self.page.mainFrame().contentsSize() if contentSize.width() > baseSize.width(): self.page.setViewportSize(contentSize)

あと僕の環境だと、Qtの画像縮小は汚ないのでPILとかを使ったほうが良い。

これの前段にSquidとか挟むべきなんだろうな。まぁなにはともあれ、やりたい事はできた