Qt / PyQt (/ Другое?): Как изменить определенные цвета в растровом изображении? - PullRequest
4 голосов
/ 25 декабря 2011

Как изменить определенные цвета в растровом изображении?Например, у меня есть растровое изображение с белыми и черными пикселями, и я хочу изменить все белые пиксели на синие, но оставить черные.Или, может быть, изменить черный на белый, а белый на синий ... [Я ищу решение в Qt / PyQt, но, возможно, это общий вопрос о том, как обрабатываются / составляются пиксельные карты.]

1 Ответ

9 голосов
/ 25 декабря 2011

Вы можете использовать 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 напрямую, если это возможно.

...