我有一个问题,我需要检测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?

最佳答案

我通过使用以下代码解决了它:

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;
}

07-27 19:32