gpt4 book ai didi

python - 设置Python截图参数

转载 作者:行者123 更新时间:2023-12-01 05:31:57 26 4
gpt4 key购买 nike

我使用以下代码来截取网页的屏幕截图。从代码中我了解到,首先将完整的页面加载到框架中,然后在画家中渲染框架。我面临的问题是,某些网页的内容可能非常非常长,但我只想要网站首页的屏幕截图。有什么办法可以解决这个问题吗?

def capture(self, url, output_file):
self.load(QUrl(url))
self.wait_load()
# set to webpage size
frame = self.page().mainFrame()
self.page().setViewportSize(frame.contentsSize())
# render image
image = QImage(self.page().viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
frame.render(painter)
painter.end()
print 'saving', output_file
image.save(output_file)

我尝试在 QSize 对象的帮助下设置框架的首选大小,但它也没有帮助。或者,有什么办法可以裁剪图像吗?非常感谢任何帮助,谢谢。

最佳答案

不存在“第一页”这样的东西。如何划分内容完全由应用程序决定。

目前,您的脚本明确地将第一个部分设置为页面的全部内容。为了避免这种情况,您应该简单地决定要捕获多少内容,然后适当调整视口(viewport)的大小。

下面的演示脚本使用 QPrinter 计算 A4 页面尺寸:

usage: capture.py url > webpage.png
from PyQt4 import QtCore, QtGui, QtWebKit

class WebPage(QtWebKit.QWebPage):
def __init__(self):
QtWebKit.QWebPage.__init__(self)
self.mainFrame().setScrollBarPolicy(
QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff)
self.mainFrame().setScrollBarPolicy(
QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff)
self.mainFrame().loadFinished.connect(self.handleLoadFinished)
printer = QtGui.QPrinter()
printer.setPaperSize(QtGui.QPrinter.A4)
self.setViewportSize(printer.paperSize(
QtGui.QPrinter.DevicePixel).toSize())

def capture(self, url):
self._url = QtCore.QUrl(url)
QtCore.QTimer.singleShot(0, self.handleLoad)

def handleLoad(self):
self.mainFrame().load(self._url)

def handleLoadFinished(self):
image = QtGui.QImage(self.viewportSize(),
QtGui.QImage.Format_ARGB32)
painter = QtGui.QPainter(image)
self.mainFrame().render(painter)
painter.end()
output = QtCore.QFile()
output.open(1, QtCore.QIODevice.WriteOnly)
image.save(output, 'PNG')
sys.exit(0)

if __name__ == '__main__':

import sys, signal
app = QtGui.QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
page = WebPage()
page.capture(sys.argv[1])
sys.exit(app.exec_())

关于python - 设置Python截图参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com