2010-10-27 50 views
0

我正在为这家印刷公司创建一个小型图像上传验证程序,他们需要确保上传的图像具有CMYK或PMS的颜色空间。检测图像颜色空间是CMYK还是PMS

这是我使用的是什么现在:

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

我可以再检查标志,其中将包含如“部分可伸缩| 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

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

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

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

强大的工具包,例如Leadtools,可能会使此任务变得更加简单和更准确比你从.NET收集的任何东西都要好。

+0

感谢有关PMS的信息,我不知道。至于阅读和解析原始头文件,你能告诉我该怎么做,或者让我朝正确的方向发表一篇能够帮助我的博客文章吗?此外,所有图像类型(.jpg,.gif,.png)中的颜色空间是否一致,或每个图像类型是否具有不同的颜色空间? – Steven 2010-10-27 20:37:48