ich diesen Code-Schnipsel bin mit verschiedenen Bilddateien zu laden:WPF Bitmap und TIFF mit CMYK + Alpha
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new System.Uri (path);
bitmap.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bitmap.EndInit();
Dies funktioniert gut für TIFF-Dateien gespeichert, wie RGB, RGB + Alpha und CMYK.
Wenn ich jedoch versuche, eine TIFF-Datei mit CMYK-Farben und einem Alpha-Kanal zu laden, erhalte ich eine Ausnahme (das Dateiformat wird vom Dekoder nicht als gültig erkannt).
Ich war zuvor mit der FreeImage-Bibliothek und einem dünnen C# -Wrapper oben drauf. FreeImage 3.x hat teilweise Unterstützung für diese Art von Bildformat, d. H. Ich musste das TIFF zweimal laden, einmal als CMYK ohne Transparenz und einmal als RGB + Alpha; Dieser Trick wird benötigt, da FreeImage nur Zugriff auf maximal 4 gleichzeitige Farbkanäle bietet.
Ich würde gerne wissen, ob es eine unterstützte Möglichkeit gibt, CMYK + Alpha-Bitmaps zu laden? Entweder direkt in C# oder indem man einen Interop-Code durchläuft, aber vorzugsweise ohne eine DLL eines Drittanbieters (anders als die .NET 4-Framework-Bibliotheken) zu verwenden.
Ein Beispiel für eine solche TIFF-Datei finden Sie here.
EDIT: Ich nicht mehr das Problem reproduzieren kann, der folgende Code funktioniert gut:
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new System.Uri (path);
bitmap.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bitmap.EndInit();
byte[] pixels = new byte[bitmap.PixelHeight*bitmap.PixelWidth*5];
bitmap.CopyPixels (pixels, bitmap.PixelWidth * 5, 0);
Aber ich bin immer noch fest: wie ich, dass das Quellbild als CMYK-codierte herausfinden kann, und Alphakanal? Wenn ich auf die Format
Eigenschaft schaue, bekomme ich nur die Information, dass das Bild 40 Bits pro Pixel hat. Alle interessanten Sachen wird in den folgenden nicht-öffentlichen Eigenschaften gespeichert:
bitmap.Format.FormatFlags == IsCMYK | NChannelAlpha;
bitmap.Format.HasAlpha == true;
Gibt es einen offiziellen Weg, um sie zu bekommen, ohne zu Reflexion zurückgreifen?
Haben Sie eine Verbindung zu einem TIFF mit CMYK mit Alpha-Kanal, wo dieses Problem auftritt? Ich kann das nicht reproduzieren –
Ich habe einen Link zu meinem TIFF-Bild in der Frage hinzugefügt (http://www.opac.ch/files/cmyka.tif) –
Ah, du hast Recht. Sorry, total verpasst .. –