gpt4 book ai didi

libpng - 为什么将 RGBA 图像转换为 RGB 时会留下 Blob ?

转载 作者:行者123 更新时间:2023-12-04 05:19:08 32 4
gpt4 key购买 nike

我使用 libpng 将 png (RGBA) 转换为 jpeg (RGB) 来解码 png 文件并应用 png_set_strip_alpha 来忽略 alpha channel 。但是转换后的输出图像有很多 Blob 。我认为原因是原始图像具有 alpha 为 0 的区域,无论其 RGB 值如何,它都会隐藏像素。当我去除 alpha(即设置 alpha = 1)时,像素显示。所以我认为只使用 png_set_strip_alpha 不是正确的解决方案。我应该自己编写一个方法,还是已经有办法在 libpng 中实现这一点?

最佳答案

没有办法做到这一点。如果您删除 alpha channel libpng 将为您提供原始 RGB channel ,这将“发现”以前不可见的颜色。

您应该加载 RGBA 图像并将其转换为 RGB。最简单的方法是将 RGB 值乘以 alpha。

这会将 RGBA 位图就地转换为 RGB:

for(int i=0; i < width*height; i++) {
int r = bitmap[i*4+0],
g = bitmap[i*4+1],
b = bitmap[i*4+2],
a = bitmap[i*4+3];

bitmap[i*3+0] = r * a / 255;
bitmap[i*3+1] = g * a / 255;
bitmap[i*3+2] = b * a / 255;
}

关于libpng - 为什么将 RGBA 图像转换为 RGB 时会留下 Blob ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872287/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com