【问题标题】:PyQt: How to Generate a Raster Image with a Custom MessagePyQt:如何使用自定义消息生成光栅图像
【发布时间】:2014-03-05 01:11:26
【问题描述】:

要生成我正在使用的纯灰色图像:

def generate_image(filepath):
    img = QtGui.QImage(720, 405, QtGui.QImage.Format_RGB32)
    img.fill(QtCore.Qt.gray)
    img.save(filepath, 'JPG')

我想知道自定义此功能以在灰色背景上叠加一条简单的文本消息会有多困难。感谢您的意见!

【问题讨论】:

  • Sputnix 继续努力。我注意到您有很多问题都有有效的有用答案,您既没有接受也没有赞成。因此,这就是您感谢人们的方式(当然,通过回答其他问题,但我知道并不是每个人都对此感到满意)。当它回答您的问题以结束问题时,接受答案也很重要。
  • 当然!我非常感谢大家的帮助甚至参与讨论!谢谢大家!! :) 我只是有时忘记更新旧帖子......对不起
  • 这是 SO 运作良好的(几个)原因之一。

标签: python pyqt qtgui qtcore


【解决方案1】:

您只需要使用QPainter 在图像上绘图:

def generate_image(filepath, text='Hello World!', color='red', font=None):
    img = QtGui.QImage(720, 405, QtGui.QImage.Format_RGB32)
    img.fill(QtCore.Qt.gray)
    painter = QtGui.QPainter(img)
    painter.setPen(QtGui.QColor(color))
    if font is None:
        font = painter.font()
        font.setBold(True)
        font.setPointSize(24)
    painter.setFont(font)
    painter.drawText(img.rect(), QtCore.Qt.AlignCenter, text)
    painter.end()
    return img.save(filepath, 'JPG')

【讨论】:

  • 感谢 Ekhumoro!我会在一两天内回到这个主题时尝试一下!
  • 代码生成图像,但报错:QPaintDevice: Cannot destroy paint device that is beingpainting
  • @Sputnix。它是无害的 - 只需在函数末尾添加 painter.end()
  • 出色的调整!使用painter.end() 它运行得非常完美!再次感谢!
  • 我会在 img.save(filepath, 'JPG')....如果不是 os.path.exists(os.path.dirname(filepath)):os.makedirs(os.path.dirname(filepath))
猜你喜欢
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2015-09-03
相关资源
最近更新 更多