我有一個應用程序在iframe中呈現網頁,然後在覆蓋該框架的div中加載X個圖像。使用框架載入頁面的屏幕截圖
所以我有這個python腳本加載的網址,並採取截圖。它在普通的網頁上工作,但我認爲框架正在拋棄它。以下是我的代碼,以及它正在進行截圖的鏈接。採取
#!/usr/bin/env python
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)
#screen = QtGui.QDesktopWidget().screenGeometry()
size = webpage.mainFrame().contentsSize()
# Set the size of the (virtual) browser window
webpage.setViewportSize(webpage.mainFrame().contentsSize())
# Paint this frame into an image
image = QImage(webpage.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
webpage.mainFrame().render(painter)
painter.end()
image.save("/var/www/html/output.png")
sys.exit(0)
qtargs = [sys.argv[0]]
qtargs.append("-display")
qtargs.append(":0")
app = QApplication(qtargs,True)
#app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
webpage.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
webpage.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
webpage.mainFrame().load(QUrl("http://localhost/heatmap"))
sys.exit(app.exec_())
截圖: http://img28.imageshack.us/img28/7506/outputc.png
,你可以在上面的圖片中看到,頁面被縮小爲一個小圖像與滾動條,不顯示與iframe和DIV之上的整個頁面它。我是否需要加載樣式表或強制它像在瀏覽器中一樣渲染? Qt.ScrollbarAlwaysOff在我的實例中似乎沒有效果。 「佔位符文本」是網頁的一部分,圖像是灰色的,左上角有一個藍色的自鳴符和彩色鍵。
當我打印webpage.mainFrame()。contentsSize()對我的應用程序的內容,我得到 PyQt4.QtCore.QSize(400,158)
但是,當我呈現類似www.google。我得到 PyQt4.QtCore.QSize(617,573)
因此,一些東西沒有被正確加載,搞亂了contentSize()。關於我出錯的地方的想法?
我有這個相同的問題。 – Christian 2010-06-18 22:42:36
我打算在明天檢查我的qt和pyqt版本,看看升級到新版本是否會有所幫助。剛注意到這兩個最近的補丁。 https://bugs.webkit.org/show_bug.cgi?id=36662 https://bugs.webkit.org/show_bug.cgi?id=36798 – Nathan 2010-06-27 04:48:02