如何使用FreeImage.NET保存.net位图

本文关键字:net 位图 保存 NET 何使用 FreeImage | 更新日期: 2023-09-27 18:14:27

花了2天时间才意识到c#位图。保存方法有问题(JPEG/grayscale/8bbp),我尝试了FreeImage看看我是否可以正确保存它,乍一看似乎是这样,但经过仔细检查似乎也不起作用。

以下是我的测试:

如果我这样做

FreeImage.SaveBitmap(aImage, aSavePath, FREE_IMAGE_FORMAT.FIF_JPEG, FREE_IMAGE_SAVE_FLAGS.DEFAULT);

图像DPI没有正确保存,如果我将位图转换为FIBITMAP(以便我可以指定DPI的

)
MemoryStream imageStream = new MemoryStream();
aImage.Save(imageStream, aImageFormat);
FIBITMAP dib = FreeImage.LoadFromStream(imageStream, FREE_IMAGE_LOAD_FLAGS.JPEG_ACCURATE, freeImageFormat);
FreeImage.SetResolutionX(dib, (uint)aImage.HorizontalResolution);
FreeImage.SetResolutionY(dib, (uint)aImage.VerticalResolution);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, aSavePath, FREE_IMAGE_SAVE_FLAGS.DEFAULT);

关于如何使用FreeImage保存位图并保留DPI和bpp的任何想法?或者是FreeImage。保存方法也有bug ?

如何使用FreeImage.NET保存.net位图

一些软件在获得分辨率时依赖于元数据,因此您可以尝试将带有DPI字段的EXIF添加到使用FreeImage创建的jpeg中。

注:你的任务看起来很简单,我相信你可以找到更多的sdk。

我放弃了这两个选项(FreeImage和Magick.NET),选择了GraphicsMagick.NET