使用System.Drawing从流中检测CMYK

时间:2013-04-26 12:04:41

标签: c# image-processing webimage

我有一个问题,我需要检测WebImage是否处于CMYK模式。通过将WebImage传递给函数或字节数组。

目前我有:

public static bool IsCMYK(Image img)
{
    bool isCMYK;

    if ((GetImageFlags(img).IndexOf("Ycck") > -1) || (GetImageFlags(img).IndexOf("Cmyk") > -1))
        isCMYK = true; 
    else
        isCMYK = false;

    return isCMYK;
}

public static string GetImageFlags(Image img)
{
  var flagVals = (ImageFlags)Enum.Parse(typeof(ImageFlags), img.Flags.ToString());

  return flagVals.ToString();
}

来自http://www.maxostudio.com/Tut_CS_CMYK.cfm

的修改代码

不确定是否是最佳做法。

如何修改此代码以从WebImage或字节数组中检测CMYK?

1 个答案:

答案 0 :(得分:2)

我使用此代码解决了它:

public static bool IsCMYK(Image image)
{
     var flags = (ImageFlags)image.Flags;
     if (flags.HasFlag(ImageFlags.ColorSpaceCmyk) || flags.HasFlag(ImageFlags.ColorSpaceYcck))
     {
         return true;
     }

     const int PixelFormat32bppCMYK = (15 | (32 << 8));
     return (int)image.PixelFormat == PixelFormat32bppCMYK;
}