【问题标题】:Detect CMYK from stream using System.Drawing使用 System.Drawing 从流中检测 CMYK
【发布时间】:2013-04-26 12:04:41
【问题描述】:

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

【问题讨论】:

    标签: c# image-processing webimage


    【解决方案1】:

    我用这段代码解决了这个问题:

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

    【讨论】:

    • 您从哪里找到(15 | (32 &lt;&lt; 8)?有用! ?
    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 2014-06-15
    • 1970-01-01
    • 2010-12-04
    • 2011-05-01
    • 2016-10-21
    • 2019-07-26
    • 2012-01-12
    相关资源
    最近更新 更多