ARGB32图片黑边问题

问题背景:将浏览器中的动态图片显示到cef中,通过cef采集QImage图片,再将这些图片传到直播系统中,实现动画的显示。这些图片在浏览器或者通过obs添加浏览器信源都可以正常显示,但是通过一层cef后,图片边缘就有了黑边。

效果如下:

细心的你有没有发现图片的四周有一层黑边(辣眼睛)

分析问题过程:

我也不会啊,那怎么办呢,找线索。于是网上搜了一圈png图片黑边的问题,又扩大到图片黑边的问题,最后基本锁定是图片的a通道渲染问题。问题出在哪一步?把cef传出来的QImage保存到本地文件,就已经有问题了,所以问题出在cef以及上游

解决问题:

在cef中离屏渲染器中生成图片的地方,QImage存储使用了Format_ARGB32模式,巴拉巴拉其他方式,有一个Format_ARGB32_Premultiplied,于是又搜了一下这个方式,感觉跟a通道有关系,网上又搜了一波,https://docs.microsoft.com/zh-cn/windows/win32/direct2d/supported-pixel-formats-and-alpha-modes?redirectedfrom=MSDN#section_9_2,是关于直接 Alpha 和预乘 Alpha的概念,感觉靠谱了,于是就修改了。生成本地图片,果然好使了,开心。效果如下:

你能看出区别来吗,哈哈哈哈哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值