QtWebKit (pyQt) を使用して Web ページを PNG 画像として保存したいと考えています。
インターネットで次のコードを見つけましたが、出力として白い画像が表示されます。
import sys
import signal
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
def onLoadFinished(result):
if not result:
print "Request failed"
sys.exit(1)
# Set the size of the (virtual) browser window
webpage.setViewportSize(QSize(640,480))
# Paint this frame into an image
image = QImage(QSize(640,480), QImage.Format_ARGB32)
paint = QPainter(image)
print webpage.mainFrame().toHtml()
webpage.mainFrame().render(paint)
paint.end()
image.save("output.png")
sys.exit(0)
app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
webpage.mainFrame().load(QUrl("http://maps.googleapis.com/maps/api/streetview?size=640x480&location=50.073723,14.43037&pitch=-0.760&sensor=false&heading=-169.73968469794528"))
sys.exit(app.exec_())
テストした他のページは正しく保存されますが、Google ストリート ビューは処理できません。
print webpage.mainFrame().toHtml()
適切な Web ページが読み込まれていることを示していますが、どういうわけかレンダリングされません... 理由はわかりますか?
私が使用:PyQt4-4.10.2-gpl-Py2.7-Qt4.8.4-x64