将 BMP 转换为 PNG,同时保留 alpha 通道

将 BMP 转换为 PNG,同时保留 alpha 通道

我有一个以 BMP 格式存储的图像,想使用 imagemagick 将其转换为 PNG。

我查看了十六进制查看器中的像素,发现它们以 32bpp 存储,因此有一个 alpha 通道。透明像素具有 RGBA 值 (255, 255, 255, 0),paint.NET 将它们选为白色像素,可能是因为它不希望 BMP 具有透明像素?

无论如何,我使用的命令是

convert -alpha on -quality 95 in.bmp out.png

但是,当我在 Paint.NET(通常可以正确解释透明像素)中打开生成的图像时,那些透明像素仍然是白色的。

我是否错误地转换了图像?我希望 alpha 值为 0 的像素在我常用的图像编辑器中显示为透明。

答案1

您发现了 ImageMagick 中的一个错误。此错误将在 ImageMagick 6.8.7-9 中修复。我是 ImageMagick 的开发人员之一,我刚刚将修复提交到我们的 SVN 存储库 (http://trac.imagemagick.org/changeset/13867)。

答案2

它可能不是 Alpha 通道。如果是位图 v4 格式文件,则可以有 Alpha 通道。对于早期版本,仍然可以将像素存储为 32 位,但最高位是保留的,总是零

下面是一个 32 位 bmp 的示例,其中α 下面是一个 32 位 bmp 的示例,其中没有阿尔法

根据 GIMP,评论中的示例图像没有 alpha 通道,identify -verbose您能做的最好的事情就是使用

convert sample.bmp -transparent white alpha.png

相关内容