2011-12-25 96 views
4

如何更改像素图中的特定颜色?例如,我有一个带有白色和黑色像素的像素图,并且我想将所有白色像素更改为蓝色,但将黑色像素单独留下。或者,也许改变黑色到白色和白色到蓝色... [我正在寻找Qt/PyQt中的解决方案,但这可能是一个关于如何处理/组成pixmaps的普遍问题。]Qt/PyQt(/其他?):如何更改像素图中的特定颜色?

回答

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() 

注意createMaskFromColor将会像素图转换为QImage,所以你应该尝试,如果可以直接使用QImage

+0

我想我会接受这种方法,如果没有其他。是否真的没有办法像素图可以遍历其像素,取代某些特定的颜色?看起来很实用很简单! – Jeff 2011-12-25 10:52:23

+0

当然有:您可以将其转换为'QImage',然后使用'bits'或'pixel'来访问各个像素。我认为'createMaskFromColor'的方法会更快,但可能不会太多。 – 2011-12-25 10:59:03

+0

你好,我知道这是一个古老的问题(抱歉打扰它),但你有这个运气吗?我正在尝试做同样的事情 – 2013-09-06 01:40:09