【问题标题】:How to blend two transparent Images with Qt如何将两个透明图像与 Qt 混合
【发布时间】:2014-06-19 17:17:50
【问题描述】:

我有两张 rgb 图像,每张图像都有一张灰度图像。灰度图像对每个像素的两个图像的透明度进行编码,例如。黑色表示不透明,完全白色。我的问题是:我想根据透明度将两个图像合并为一个不透明的图像(如果将两个灰度图像相加,每个像素都会变黑)。关于如何使用 qt 5 执行此操作的任何想法?

谢谢!!

【问题讨论】:

  • 思路:1)将2张图片和2张alpha贴图加载为QImages,根据alpha贴图修改两张图片中的alpha通道,然后正常混合。 2) 和以前一样,但只需使用所有四张图像作为参考进行 Porter-Duff 混合。 3) 使用QPainter 的合成模式——如果你能够blit alpha 贴图,那么SourceInSourceATop 会给你第一个带有烘焙alpha 的图像,对第二张图片,然后将它们以普通SourceOver 混合在一起。

标签: c++ image qt qpainter qimage


【解决方案1】:

将您的图像转换为QPixmap(使用convertFromImage)。然后使用setMask 与您的灰度位图作为参数。我还没有在 Qt5 中测试过,但它应该可以解决问题。

【讨论】:

  • 没有。 setMask 设置单色蒙版,与混合无关,除非您回想起抖动单色 X11 风靡一时的日子。
  • 我的错,唯一一次我不得不使用它是为了全有或全无,没有半透明的解决方案。
  • 我最终使用 setPixel 手动操作。可能效率不高,但在我的情况下就足够了。
猜你喜欢
  • 2015-02-03
  • 2011-12-06
  • 2017-03-31
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多