2
完全にロードされたときにページの内容をイメージに保存したいが、出力ラスタが完全にレンダリングされないことがある。QWebPageのQImageが完全にレンダリングされない
import sys
import signal
import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
def onLoadFinished(result):
if not result:
print "Request failed"
sys.exit(1)
webpage.setViewportSize(webpage.mainFrame().contentsSize())
image = QImage(webpage.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
webpage.mainFrame().render(painter)
painter.end()
if os.path.exists("output.png"):
os.remove("output.png")
image.save("output.png")
sys.exit(0) # quit this application
webpage.mainFrame().load(QUrl("file:///page.html"))
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
sys.exit(app.exec_())
このページでは、JavaScript(onload関数)を使用してGoogleマップ(640x640px)を取得しています。
Image http://i56.tinypic.com/15ojg3s.png
これは、ページのロードが完了した後でイメージがAjaxを使用してロードされるためです。これは便利ですか?http://stackoverflow.com/questions/1302874/how-to-know-when-a-web-page-is-loaded-when-using-qtwebkit? – xioxox