для тех, кто идет по этому старый пост, приведенный выше код с Гордоном отлично работает, но, как jixtra отметил, вы действительно получите исключение: System.DllNotFoundException: «Невозможно загрузить DLL« FreeImage »: указанный модуль не найден. ' при установке через nuget. Я смог заставить его работать в .net 4.6.1, установив пакет нулевого пакета FreeImage-dotnet и вручную добавив FreeImage.dll в папку bin. Вы можете скачать dll здесь: http://freeimage.sourceforge.net/download.html.
мне нужно более высокое качество изображения для использования с тессеракта, так что я сделал несколько незначительных изменений, которые сделали огромную разницу в качестве нового JPEG:
var jp2Format = FREE_IMAGE_FORMAT.FIF_JP2;
var dib = FreeImage.LoadEx("test.jp2", ref jp2Format);
FreeImage.SetResolutionX(dib, 300);
FreeImage.SetResolutionY(dib, 300);
FreeImage.Save(FREE_IMAGE_FORMAT.FIF_JPEG, dib, "test.jpg", FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB);
спасибо за руководство. +1 для ответа ур. Но после рендеринга изображений jpeg200 в моей оконной форме я получаю исключение из-за того, что dib как null. ** Исключение было создано в конвейере рендеринга. ---> System.ArgumentNullException: значение не может быть нулевым. Имя параметра: dib на FreeImageAPI.FreeImage.GetBitmap (FIBITMAP dib, Boolean copyMetadata) на FreeImageAPI.FreeImage.GetBitmap (FIBITMAP dib) **. В процессе отладки выяснилось, что этот метод ** статический FIBITMAP LoadEx (строковое имя файла, флаги FREE_IMAGE_LOAD_FLAGS, формат FREE_IMAGE_FORMAT) ** возвращает мне структуру {0}, которая вызывает вышеупомянутое исключение. –
Я получаю исключение модуля, не найденное с последним пакетом пакетов FreeImage nuget – jjxtra