如何在不损失质量的情况下将 PNG 转换为 BMP

Posted

技术标签:

【中文标题】如何在不损失质量的情况下将 PNG 转换为 BMP【英文标题】:How can I transform a PNG to a BMP without loosing quality 【发布时间】:2015-02-02 03:10:47 【问题描述】:

这是一个棘手的问题。首先尝试this,结果很糟糕

Image Dummy = Image.FromFile("image.png");   
Dummy.Save("image.bmp", ImageFormat.Bmp);

-----转化为---->

我不知道会发生什么。 有什么线索吗?

【问题讨论】:

这与源图像的透明度有关。我刚刚通过将您的 PNG 保存为白色背景进行了尝试,并且转换工作正常。我已经尝试过 PngBitmapDecoder 类,但我得到了相同的结果,所以还不确定解决方案。 您是否需要 .net 中的程序,或者这仅用于使用提供的图像进行一次转换? 这是我正在编写的脚本,所以我可以从 .net 进程调用的二进制文件也可以解决问题 【参考方案1】:

BMP 和 PNG 都是无损的,但 PNG 支持透明度,而 BMP 不支持。因为您的原始图像具有透明度,所以在转换它之前,您应该首先问自己您希望(半)透明像素发生什么,并且不要让 BMP 编码器决定(它似乎做出了一些奇怪的决定,顺便说一句)。

从概念上讲,要删除透明度量,以添加一些不透明的背景(通常为白色或黑色 - 在您的情况下为白色)。要在 C# 中执行此操作,请参阅 this question

【讨论】:

以上是关于如何在不损失质量的情况下将 PNG 转换为 BMP的主要内容,如果未能解决你的问题,请参考以下文章

在不更改像素值的情况下将 svg 转换为 png

在不更改字体的情况下将SVG转换为PNG

python如何在不损失质量的情况下调整(缩小)图像的大小

如何在不通知用户的情况下将画布保存为 png 文件,

如何在不丢失信息的情况下将因子转换为整数\数字?

如何在不转换为整数的情况下将 null 转换为 int?