首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C#识别CMYK图像

如何使用C#识别CMYK图像
EN

Stack Overflow用户
提问于 2010-11-30 23:25:09
回答 2查看 6.7K关注 0票数 20

有人知道如何使用C#正确识别CMYK图像吗?我找到了使用ImageMagick的方法,但我需要一个.NET解决方案。我在网上找到了3个代码片段,其中只有一个在Windows7下可以工作,但在Windows Server2008 SP2上都失败了。我需要它至少在Windows Server2008 SP2中工作。这是我发现的:

代码语言:javascript
复制
    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; 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-02 10:58:17

我不会从BitmapImage开始作为加载数据的方式。事实上,我根本不会在这方面使用它。相反,我会使用BitmapDecoder::Create并传入BitmapCreateOptions.PreservePixelFormat。然后,您可以访问您感兴趣的BitmapFrame并检查它的Format属性,该属性现在应该会生成CMYK。

然后,如果您确实需要显示图像,则可以将BitmapFrame (也是一个BitmapSource子类)分配给Image::Source

票数 5
EN

Stack Overflow用户

发布于 2012-02-29 02:07:53

我遇到了同样的问题,如果您使用的是.net 2.0,那么BitmapDecoder将无法工作。您要做的是读取该文件,然后进行简单的检查,以查看字节显示的文件是什么。How to identify CMYK images in ASP.NET using C#希望这能帮助一些人。

干杯--杰里米

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4315335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档