Skip to content

P26-图片场景输出为图片

按照区域大的输出:

python
def exportSceneToImage(self):
    # 获取场景的范围
    scene_rect = self.sceneRect()
     # 弹出输入对话框获取用户输入的文件名,默认为"img_1.png"
    file_name, _ = QInputDialog.getText(self, '导出图片', '输入文件名', text='img_1.png')
    # 如果用户取消了输入,则返回
    if not file_name:
        return
    # 创建一个QImage对象
    image = QImage(scene_rect.size().toSize(), QImage.Format.Format_ARGB32)
    image.fill(Qt.GlobalColor.white)
    # 创建一个QPainter对象
    painter = QPainter(image)
    # 将场景渲染到QImage中
    self.scene().render(painter, QRectF(image.rect()), scene_rect)
    # 结束绘制
    painter.end()
    # 保存QImage为图片文件
    image.save(file_name)
    QMessageBox.information(self, '提示', '图片已保存在当前目录下!', QMessageBox.StandardButton.Ok)

按照场景内容的大小输出图片

python
def exportSceneToImage(self):
    # 获取场景的范围
    scene_rect = self.sceneRect()
    # 获取场景内容的大小
    content_rect = self.scene().itemsBoundingRect()
    # 使用场景内容的大小来确定导出图片的大小
    image_size = content_rect.size().toSize()
    # 弹出输入对话框获取用户输入的文件名,默认为"img_1.png"
    file_name, _ = QInputDialog.getText(self, '导出图片', '输入文件名', text='img_1.png')
    # 如果用户取消了输入,则返回
    if not file_name:
        return
    # 创建一个QImage对象
    image = QImage(image_size, QImage.Format.Format_ARGB32)
    image.fill(Qt.GlobalColor.white)
    # 创建一个QPainter对象
    painter = QPainter(image)
    # 将场景渲染到QImage中,以内容的大小为主
    self.scene().render(painter, QRectF(image.rect()), content_rect)
    # 结束绘制
    painter.end()
    # 保存QImage为图片文件
    image.save(file_name)
    QMessageBox.information(self, '提示', '图片已保存在当前目录下!', QMessageBox.StandardButton.Ok)

本站收录内容源自互联网,不对其网站内容或交易负责。 | 如有内容侵犯权益,请联系站长删除相关内容!