由于目前印兔项目中的在线设计功能设计出来的产品颜色模式不确定,但是客户设计出来的产品需要发送到印厂的客户端去下载并且印刷,只有CMYK颜色模式的产品才能正确印刷,所以需要判断产品的颜色模式是否为CMYK,如果不是就将产品的颜色模式转为CMYK模式。

首先需判断目前产品的颜色模式

1 Image img = Bitmap.FromFile("图片路径", true);
2
3 PixelFormat pf = (PixelFormat)img.PixelFormat;
4 if (pf.ToString() == "8207")
5 {
6 MessageBox.Show("图片是CMYK模式!");
7 }

因为img.PixelFormat的返回值为Format8bppIndexed 灰度模式,在遇到RGB等其他颜色模式时返回“Format24bppRgb”,但是在遇到CMYK模式的图片是返回“8207”

我刚开始以为还要算法,因为CMYK转RGB有对应的算法,但是没有找到RGB转CMYK的算法,所以就想把CMYK转RGB的公式反推回去,结果被安排了 /笑哭 (算法啥的本人都没接触过,有啥不对的大家就喷吧 /阴险)

后来找到了对应的RGB转CMYK的算法

c'=255-r;
m'=255-g;
y'=255-b;
k=min(c',m',y');
c=c'-k;
m=m'-k;
y=y'-k; R‘ =R/255
G‘ =G/255
B‘ = B/255
K= 1-max(R‘,G‘,B‘)
C= (1-R‘-K) / (1-K)
M= (1-G‘-K) / (1-K)
Y= (1-B‘-K) / (1-K)

找了两个,算出值需要省略小数点后不需要的,乘100就好

然后又了解到magick.net,用NuGet可以直接引用到项目中

 MagickImage magickImage = new MagickImage("图片路径");
//MessageBox.Show(magickImage.ColorSpace.ToString());
//magickImage.TransformColorSpace(ColorProfile.AdobeRGB1998);
//magickImage.Settings.ColorSpace = ImageMagick.ColorSpace.CMYK;
magickImage.ColorSpace = ColorSpace.CMYK;
string path = @"D:\cmyk" + ((TimeSpan)(DateTime.Now.ToUniversalTime() - new DateTime(, , ))).TotalMilliseconds + ".jpg"; magickImage.Write(path);
magickImage.Dispose();
MessageBox.Show("图片已转换CMYK模式!\n 路径:" + path);

就简单的几句代码就OK了

本人技术不精,就是个人研究,也不确定这样写是不是正确,只是作为个人的一个积累,也希望给后边的人一个借鉴,坐等大佬安排 !!!

【C#】RGB转CMYK的更多相关文章

  1. RGB与CMYK以及加色与减色

    转载自:http://blog.csdn.net/tohmin/article/details/4761930 黑白色配色与RGB.CMYK 1. 光学三原色与印刷三原色 光学与印刷三原色, 相信大家 ...

  2. 使用ImageMagick的convert命令,实现批量rgb转cmyk

    因为业务上的需求,使用脚本批量生成的二维码不能直接去打印店排版印刷,必须转换为cmyk的印刷格式. 首先去http://www.imagemagick.org/下载ImageMagick并安装,这个工 ...

  3. Gimp RGB 转 CMYK

    安装GIMP separate+插件.在Windows的Photoshop中,有转换CMYK的功能,非常简单.在Linux里,通常用GIMP进行转换.由于授权的问题,默认安装的GIMP里没有安装转换的 ...

  4. RGB,CMYK,HSB各种颜色表示的转换 C#语言

    Introduction Why an article on "colors"? It's the same question I asked myself before writ ...

  5. 【C#】RGB,CMYK,HSB各种颜色表示的转换(转)

    [C#]RGB,CMYK,HSB各种颜色表示的转换   一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合 ...

  6. 颜色空间模型(HSV\LAB\RGB\CMYK)

    通过Photoshop的拾色器,我们知道表征颜色的模型的不止一种,本文将系统并且详细讨论这四种模型(HSV.LAB.RGB和CMYK)之间的联系以及应用.本文部分章节整合了多位优秀博主的博客(链接见本 ...

  7. 色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV

    之前做个设计,现在从事IT,脑子里面关于RGB,RGBA,CMY,CMYK,YUV,但是具体理论还是不扎实.若干年前之前写过<水煮RGB与CMYK色彩模型—色彩与光学相关物理理论浅叙>&l ...

  8. 【转载】颜色空间-RGB、HSI、HSV、YUV、YCbCr的简介

    转载自缘佳荟的博客. 颜色通常用三个相对独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间.而颜色可以由不同的角度,用三个一组的不同属性加以描述,就产生了不同的颜色空间.但 ...

  9. 颜色空间RGB与HSV(HSL)的转换

    一般的3D编程只需要使用RGB颜色空间就好了,但其实美术人员更多的是使用HSV(HSL),因为可以方便的调整饱和度和亮度. 有时候美术需要程序帮助调整饱和度来达到特定风格的渲染效果,这时候就需要转换颜 ...

随机推荐

  1. c# 利用t4模板,自动生成Model类

    我们在用ORM(比如dapper)的时候,很多时候都需要自己写Model层(当然也有很多orm框架自带了这种功能,比如ef),特别是表里字段比较多的时候,一个Model要写半天,而且Model如果用于 ...

  2. DotNet三层架构

    [项目结构]DAL 数据访问层.BLL 业务逻辑.UI 表现层 Model 数据.Common 常用工具[引用关系]DAL --> Model CommonCommon --> 谁都不引用 ...

  3. 30个你 “ 不可能全部会做 ” 的javascript题目-答案解释

    题目链接:http://www.cnblogs.com/0603ljx/p/4458127.html 1,D map对数组的每个元素调用定义的回调函数并返回包含结果的数组.["1" ...

  4. django系列8.1--django的中间件01 自定义中间件的5个方法

    一.Django中的中间件 Django中间件定义: Middleware is a framework of hooks into Django's request/response process ...

  5. COOKIE的优化与购物车小试

    由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 一 Cookie 的优化 1.1 一般而言,我们设置cookie是在ph ...

  6. 【文文殿下】后缀自动机(SAM)求最长公共子串的方法

    首先,在A 串上建立一个SAM,然后用B串在上面跑.具体跑的方法是: 从根节点开始,建立一个指针 p ,指着B串的开头,同步移动指针,沿着SAM的边移动,如果可以移动(即存在边)那么万事皆好,直接le ...

  7. matlab中显示灰阶图像

    matlab的数据源文件中400张图片,每张图片是一个112*92的矩阵表示,而400张图片存储在一个cell数组ime中,显示第一张图片,指令是: colormap(gray) imagesc(im ...

  8. 《快学Scala》第三章 数组相关操作

  9. css 实现关闭按钮 X

    .close::before { content: "\2716";} 然后就显示出来了 这里有个更直接的例子 <!DOCTYPE html> <html lan ...

  10. Creating a custom analyzer in ElasticSearch Nest client

     Creating a custom analyzer in ElasticSearch Nest client Question: Im very very new to elasticsearch ...