Qt/PyQt(/ Other?):如何更改像素图中的特定颜色?

Jef*_*eff 4 qt pyqt pixmap

如何更改像素图中的特定颜色?例如,我有一个带有白色和黑色像素的像素图,我想将所有白色像素更改为蓝色,但不要将黑色像素单独保留.或者可能将黑色变为白色,白色变为蓝色...... [我在Qt/PyQt中搜索解决方案,但也许这是关于如何处理/合成像素图的一般问题.

Pao*_*tti 9

您可以使用createMaskFromColor为白色像素创建位图,然后使用drawPixmap另一种颜色覆盖它们.

    pix = QPixmap("test.png")
    mask = pix.createMaskFromColor(QColor(255, 255, 255), Qt.MaskOutColor)

    p = QPainter(pix)
    p.setPen(QColor(0, 0, 255))
    p.drawPixmap(pix.rect(), mask, mask.rect())
    p.end()
Run Code Online (Sandbox Code Playgroud)

请注意,createMaskFromColor将pixmap转换为a QImage,所以QImage如果可能的话,你应该尝试直接使用.