Потратив 2 дня на то, чтобы понять, что метод C# Bitmap.Save содержит ошибки (для JPEG/оттенков серого/8bbp), я попробовал FreeImage, чтобы увидеть, смогу ли я сохранить его правильно, и на первый взгляд это так и выглядело, но при ближайшем рассмотрении кажется, это тоже не работает.
Вот мои тесты:
If I do
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 тоже глючит?