c# - 为什么 C# 中的位图在保存时会扩大图像的文件大小?
问题描述
我正在开发一个项目,该项目需要通过修改像素数据数组以不同方式处理图像。在 C# 中使用 Bitmap 类非常简单,但保存 Bitmap 似乎有一种奇怪的行为。
即使对于没有以任何方式修饰的图像,它的大小在保存时也会增加。
例如source.png - 2MB
变成destination.png - 3MB
class Program
{
static void Main(string[] args)
{
Bitmap bitmap = new Bitmap(@"SomePath\source.png");
bitmap.Save(@"SomePath\destination.png", ImageFormat.Png);
}
}
解决方案
如果原始图像是在保存图像时应用压缩算法的第 3 方软件中创建的,有时会发生这种情况。当您将此图像作为位图对象打开时,压缩将“撤消”。并且在保存时,C# 不会应用与第 3 方软件应用的相同压缩算法,从而导致生成的图像尺寸扩大。
推荐阅读
- html - Jinja & Wtforms - 检查是否定义了 html 属性
- python-3.x - OutOfRangeError(参见上面的回溯):RandomShuffleQueue '_1 总是出现..,为什么?
- angular - 如何在 vmware-clarity、Angular6 中将 sidenav 导航链接的默认状态设置为关闭
- eclipse - eclipse.ini文件中的相对路径是否可以使-vm在eclipse下查看目录?
- python - 映射 2 个数据帧并替换目标数据帧中匹配值的标头
- java - 从rest api下载文件给了我一些垃圾值
- javascript - 如何通过另一个属性找到猫鼬模型的属性?
- python - 想要以相同的顺序和行从 git 存储库中获取具有详细信息(日期、时间、gmt、文件路径、作者)的日志
- android - 无法解析 ':app@debug/compileClasspath' 的依赖关系:无法解析 com.google.firebase:firebase-messaging:17.1.0
- javascript - 使用 Javascript 替换文本而不丢失内部标签