2011-12-25 7 views
4

ピックスマップの特定の色を変更するにはどうすればよいですか?たとえば、白と黒のピクセルを持つピックスマップがあり、すべての白のピクセルを青に変更したいが、黒のピクセルはそのままにしておきたい。 Qt/PyQtで解決策を探していますが、これはピックスマップがどのように処理/合成されるかに関する一般的な質問です。Qt/PyQt(/ Other?):ピックスマップの特定の色を変更するにはどうすればいいですか?

答えて

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

私はこのアプローチを受け入れるでしょう。 pixmapが特定の色を置き換えてピクセルを反復処理する方法はありませんか?便利で簡単に実装できるようです。 – Jeff

+0

もちろん、「QImage」に変換してから、「bits」または「pixel」を使って個々のピクセルにアクセスすることができます。 'createMaskFromColor'のアプローチはもっと速くなるでしょう、と私は思っています。 –

+0

こんにちは、これは古い質問です(それを混乱させて申し訳ありません)が、これで運がありましたか?私は同じことをやろうとしている –

関連する問題