0

ページのコンテンツが完全に読み込まれたときに画像に保存したいのですが、出力ラスターが完全にレンダリングされない場合があります。

コード:

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)を取得しています。

画像: http: //i56.tinypic.com/15ojg3s.png

4

1 に答える 1

1

これが可能かどうかはわかりません。静的な Web サイトの場合、これはおそらく機能する可能性がありますが、Google マップはタイルを動的にロードし、使用可能な「完了」シグナルを発するかどうかは疑問です。

しかし、Google マップの画像だけが必要なようですか? 彼らのAPIを見ましたか?URL を作成するだけで、静的な地図を生成できます。

http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap &markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318 &markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false

マップの例

于 2011-02-11T13:54:47.270 に答える