Für alle über diesen alten Post kommen, der obige Code von Gordon funktioniert gut, aber wie jixtra darauf hingewiesen, werden Sie in der Tat erhalten eine Ausnahme: System.DllNotFoundException: 'DLL' FreeImage 'konnte nicht geladen werden: Das angegebene Modul konnte nicht gefunden werden.' bei der Installation über nuget. Ich konnte es in .net 4.6.1 arbeiten, indem ich das FreeImage-dotnet-core nugget-Paket installiere und die Datei FreeImage.dll manuell zum bin-Ordner hinzufüge. Sie können die DLL hier herunterladen: http://freeimage.sourceforge.net/download.html.
Ich brauchte eine bessere Bildqualität mit Tesseract zu verwenden, so machte ich ein paar kleineren Veränderungen, die einen großen Unterschied für die Qualität des neuen JPEG gemacht:
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);
danke für die Führung von mir. +1 für deine Antwort. Aber nachdem ich jpeg200-Bilder auf meinem Fenster-Formular gerendert habe, erhalte ich eine Ausnahme wegen dib als Null. ** Eine Ausnahme wurde in der Render-Pipeline geworfen. ---> System.ArgumentNullException: Wert kann nicht null sein. Parametername: dib bei FreeImageAPI.FreeImage.GetBitmap (FIBITMAP dib, Boolean copyMetadata) bei FreeImageAPI.FreeImage.GetBitmap (FIBITMAP dib) **. Während des Debuggens, fand diese Methode ** statische FIBITMAP LoadEx (Zeichenkette Dateiname, FREE_IMAGE_LOAD_FLAGS Flags, ref FREE_IMAGE_FORMAT Format) ** gibt mir eine Struktur {0} zurück, die die obige Ausnahme verursacht. –
Ich bekomme eine Modul nicht gefunden Ausnahme mit dem neuesten FreeImage Nugget-Paket – jjxtra