Dot-Net

如何使用 C# 辨識 CMYK 圖像

  • November 30, 2010

有人知道如何使用 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

引用自:https://stackoverflow.com/questions/4315335