Frage

Wie konvertiert man ein Bild von einem Farbprofil in ein anderes (Bildschirm zu Drucker oder Scanner zu Bildschirm)?In Visual C++ würden Sie die Funktion in ICM.h verwenden. Gibt es eine verwaltete Möglichkeit, dies mit GDI+ zu tun?

Ich muss GDI+ verwenden, nicht WPF.Ich hätte lieber eine verwaltete Lösung, aber wenn diese nicht verfügbar ist, muss PInkwoke meiner Meinung nach ausreichen.

War es hilfreich?

Lösung

Es gibt eine Reihe von Lösungen.

  1. Für GDI+, Schauen Sie sich diesen Artikel auf MSDN an.
  2. Informationen zu WPF (.NET 3.0) finden Sie im System.Windows.Media Namensraum.Es gibt eine Reihe verschiedener Klassen, wie zum Beispiel die BitmapEncoder, die das Konzept von a haben Farbkontext, das „das Farbprofil des International Color Consortium (ICC) oder Image Color Management (ICM) darstellt, das einem Bitmap-Bild zugeordnet ist.“

Beide scheinen ziemlich komplex zu sein, daher besteht immer die Möglichkeit, den Code von jemand anderem zu kaufen.Atalasofts DotImage Photo Pro verfügt über integrierte ICC-Profileinstellungsfunktionen.Der Code ist teuer;Eine Entwicklerlizenz kostet fast 2 KB.Aber aufgrund ihrer Beteiligung an der Dotnet-Community würde ich ihnen einen Versuch geben.

Andere Tipps

Schauen Sie sich das mal an Lcms.Es ist ein Farbmanagementsystem, ziemlich vollständig, aber in C geschrieben.Sie können Pinvoke verwenden, ich würde jedoch den Managed C++-Wrapper empfehlen.Ich arbeite derzeit an einem verwalteten Wrapper rund um die Engine (nur die Grundlagen, Farbprofilkonvertierung, Laborwerte).Ich kann einen Link zum Code posten, sobald ich fertig bin.Es kann aber auch eine Woche oder so dauern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top