Как смешать два прозрачных изображения с Qt

У меня есть два изображения RGB и для каждого изображения изображение в оттенках серого. Изображения в градациях серого кодируют прозрачность двух изображений на пиксель, например. черный означает непрозрачный, белый полностью. Мой вопрос: я хочу объединить два изображения в соответствии с прозрачностью в одно непрозрачное изображение (если вы просуммируете два изображения в градациях серого, вы получите черный цвет для каждого пикселя). Есть идеи, как это сделать с qt 5?

Спасибо!!


person matej.svejda    schedule 19.06.2014    source источник
comment
Идеи: 1) Загрузите 2 изображения и 2 альфа-карты как QImages, измените альфа-каналы в двух изображениях в соответствии с альфа-картами, затем смешайте как обычно. 2) Как и раньше, но просто сделайте смешивание Портера-Даффа, используя все четыре изображения в качестве эталона. 3) Поиграйте с режимами композиции QPainter - если вы можете копировать альфа-карту, то SourceIn или SourceATop предоставят вам первое изображение с запеченным альфа-каналом, сделайте то же самое со вторым изображением, затем смешайте их вместе в нормальный SourceOver.   -  person peppe    schedule 19.06.2014


Ответы (1)


Преобразуйте свое изображение в QPixmap (используя convertFromImage). Затем используйте setMask с растровым изображением в градациях серого в качестве параметра. Я не тестировал в Qt5, но он должен помочь.

person Laurent Jalbert Simard    schedule 19.06.2014
comment
Нет. setMask устанавливает монохромную маску и не имеет ничего общего с смешиванием, если только вы не вернетесь к дням, когда смешанный монохромный X11 был в моде. - person Kuba hasn't forgotten Monica; 19.06.2014
comment
Мое плохое, единственный раз, когда мне пришлось его использовать, было решение «все или ничего», без полупрозрачного решения. - person Laurent Jalbert Simard; 19.06.2014
comment
В итоге я сделал это вручную с помощью setPixel. Возможно, неэффективно, но в моем случае этого достаточно. - person matej.svejda; 30.06.2014