带alpha的WebP会丢失颜色通道数据

WebP with alpha losing color channels data

本文关键字:颜色 通道 数据 alpha WebP      更新时间:2023-10-16

我们目前在视频游戏中切换到WebP纹理。我们遇到了一个问题,即图像中alpha通道设置为零的区域最终会丢失所有细节。您可以在下面的示例中看到这种效果:

原图(左为彩色通道,右为alpha通道)

保存为WebP后

你可以看到,0 -alpha区域已经失去了它们的细节。

当alpha通道被用作透明通道时,此优化是有意义的。然而,在我们的游戏中,我们将alpha用于其他内容,并且需要保持独立于alpha通道的颜色通道完整性。如何在编码器中禁用此效果,使颜色通道正常编码?

我应该提到我在c++中使用libwebp,调用函数WebPEncodeRGBA。

谢谢!

https://developers.google.com/speed/webp/docs/cwebp

本文档记录了-exact参数。

准确在透明区域保留RGB值。默认为关闭,以帮助可压缩性。

找到解决方案。通过libwebp代码跟踪后,我在WebPConfig中发现了一个未记录的选项,称为"exact"。将其设置为1将阻止库在编码时优化0 -alpha区域。