Dot-Net
如何使用 C# 辨識 CMYK 圖像
有人知道如何使用 C# 正確辨識 CMYK 圖像嗎?我找到了使用 ImageMagick 的方法,但我需要一個 .NET 解決方案。我在網上找到了 3 個程式碼片段,只有一個在 Windows 7 中有效,但在 Windows Server 2008 SP2 中都失敗了。我需要它至少在 Windows Server 2008 SP2 中工作。這是我發現的:
using System.Windows.Media; using System.Windows.Media.Imaging; using System.Drawing; using System.Drawing.Imaging; bool isCmyk; // WPF BitmapImage wpfImage = new BitmapImage(new Uri(imgFile)); // false in Win7 & WinServer08, wpfImage.Format = Bgr32 isCmyk = (wpfImage.Format == PixelFormats.Cmyk32); // Using GDI+ Image img = Image.FromFile(file); // false in Win7 & WinServer08 isCmyk = ((((ImageFlags)img.Flags) & ImageFlags.ColorSpaceCmyk) == ImageFlags.ColorSpaceCmyk); // true in Win7, false in WinServer08 (img.PixelFormat = Format24bppRgb) isCmyk = ((int)img.PixelFormat) == 8207;
我不會從 BitmapImage 作為您載入數據的方式開始。事實上,我根本不會使用它。相反,我會使用
BitmapDecoder::Create並傳入BitmapCreateOptions.PreservePixelFormat. 然後你可以訪問BitmapFrame你感興趣的並檢查它Format現在應該產生 CMYK 的屬性。然後,如果您確實需要顯示圖像,您可以將
BitmapFrame也是BitmapSource子類的分配給Image::Source。