有人知道如何使用C#正确识别CMYK图像吗?我找到了使用ImageMagick的方法,但我需要一个.NET解决方案。我在网上找到了3个代码片段,其中只有一个在Windows7下可以工作,但在Windows Server2008 SP2上都失败了。我需要它至少在Windows Server2008 SP2中工作。这是我发现的:
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Drawing;
using System.Drawing.Imaging;
bool isCmyk;
// WPF
BitmapImage wpfImage = new BitmapImage(new Uri(imgFile));
// false in Win7 & WinServer08, wpfImage.Format = Bgr32
isCmyk = (wpfImage.Format == PixelFormats.Cmyk32);
// Using GDI+
Image img = Image.FromFile(file);
// false in Win7 & WinServer08
isCmyk = ((((ImageFlags)img.Flags) & ImageFlags.ColorSpaceCmyk) ==
ImageFlags.ColorSpaceCmyk);
// true in Win7, false in WinServer08 (img.PixelFormat = Format24bppRgb)
isCmyk = ((int)img.PixelFormat) == 8207;
发布于 2010-12-02 10:58:17
我不会从BitmapImage开始作为加载数据的方式。事实上,我根本不会在这方面使用它。相反,我会使用BitmapDecoder::Create
并传入BitmapCreateOptions.PreservePixelFormat
。然后,您可以访问您感兴趣的BitmapFrame
并检查它的Format
属性,该属性现在应该会生成CMYK。
然后,如果您确实需要显示图像,则可以将BitmapFrame
(也是一个BitmapSource
子类)分配给Image::Source
。
发布于 2012-02-29 02:07:53
我遇到了同样的问题,如果您使用的是.net 2.0,那么BitmapDecoder将无法工作。您要做的是读取该文件,然后进行简单的检查,以查看字节显示的文件是什么。How to identify CMYK images in ASP.NET using C#希望这能帮助一些人。
干杯--杰里米
https://stackoverflow.com/questions/4315335
复制相似问题