检测图像颜色空间是CMYK还是PMS

时间:2010-10-27 19:42:10

标签: c# asp.net image colors

我正在为这家打印公司创建一个小型图片上传验证器,他们需要确保上传的图片的色彩空间为CMYK或PMS。

这就是我现在正在使用的:

Image img = Image.FromStream(fupFile.PostedFile.InputStream);
ImageFlags flags = (ImageFlags)Enum.Parse(typeof(ImageFlags), img.Flags.ToString());

然后我可以检查标志,其中包含“Partially Scalable | ColorSpaceCmyk | HasRealPixelSize”之类的内容。这里有更多信息:http://msdn.microsoft.com/en-us/library/system.drawing.imaging.imageflags.aspx

请注意,PMS颜色空间没有标志。有没有办法检查?

另外,我上传的一些文件,根本没有颜色空间标志。这是否意味着无法识别色彩空间?

我也想知道这是否是一种检查色彩空间的简单方法,或者是否有更好的策略?

修改

我一直在四处寻找,我想你可以从图像的元数据中获取大量数据。 http://msdn.microsoft.com/en-us/library/xddt0dz7%28v=VS.90%29.aspx

有人知道元数据是否包含图像的色彩空间吗?

1 个答案:

答案 0 :(得分:1)

PMS 是一个色彩空间,而是一个色彩匹配系统(PANTONE色彩匹配系统)。我非常怀疑你会发现任何流行的位图图像文件编解码器,它采用这种编码像素颜色的方法。相反,他们会将PANTONE颜色编码为CMYK或RGB(或许是另一种颜色模型)之一。

像Postscript或PDF这样的矢量文件格式可能会嵌入包含PMS参考的专色,但是,即使这些格式通常也需要相当于PMS编号的RGB或CMYK。

确定图像颜色模型的最佳方法是了解和理解文件格式本身。读取和解析原始文件头并确定基础数据是否存储为CMYK,RGB等并不难...

强大的工具包,例如Leadtools,可以使这项任务比从.NET收集的任何内容更容易,更准确。