花了 2 天时间才意识到 C# Bitmap.Save 方法有问题(对于 JPEG/灰度/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.Save 方法也有问题?