如何使用 PyQt5 打印预览图像?

Posted

技术标签:

【中文标题】如何使用 PyQt5 打印预览图像?【英文标题】:How can I print preview an image with PyQt5? 【发布时间】:2022-01-04 00:41:56 【问题描述】:

我正在尝试使用QPrintPreviewDialog() 打印预览 PIL 图像 我该怎么做?

【问题讨论】:

【参考方案1】:

要将 PIL 图像转换为像素图(以便打印),您可以使用此函数:

def pil2pixmap(im):
    if im.mode == "RGB":
        r, g, b = im.split()
        im = IM.merge("RGB", (b, g, r))
    elif im.mode == "RGBA":
        r, g, b, a = im.split()
        im = IM.merge("RGBA", (b, g, r, a))
    elif im.mode == "L":
        im = im.convert("RGBA")
    im2 = im.convert("RGBA")
    data = im2.tobytes("raw", "RGBA")
    qim = QtGui.QImage(data, im.size[0], im.size[1], QtGui.QImage.Format_ARGB32)
    qim = qim.smoothScaled(int(2480 / 3.2), int(3508 / 3.2))
    pixmap = QtGui.QPixmap.fromImage(qim)
    return pixmap

以上代码来源:https://***.com/a/48705903/16592435

然后要预览图像,您可以使用此功能:

def print_image(image):
    
   # Initializes the QPainter and draws the pixmap onto it
    def drawImage(printer):
        painter = QPainter()
        painter.begin(printer)
        painter.setPen(Qt.red)
        painter.drawPixmap(0, 0, pil2pixmap(image))
        painter.end()
    
    # Shows the preview
    app = QApplication(sys.argv)
    dlg = QPrintPreviewDialog()
    dlg.paintRequested.connect(drawImage)
    dlg.exec_()
    app.exec_()

【讨论】:

以上是关于如何使用 PyQt5 打印预览图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中打印和打印预览位图

如何正确设置在 PyQt5 上缩放的 Pixmap?

PyQt5 和 Django:如何使用 HTTP 请求(Multipart-form)上传图像?

如何在pyqt5 QlistWidget中选择多个项目并打印它们[重复]

如何要求用户在 Pyqt5 中输入图像 [关闭]

excel中如何使用分页预览设置分几页打印