由于目前印兔项目中的在线设计功能设计出来的产品颜色模式不确定,但是客户设计出来的产品需要发送到印厂的客户端去下载并且印刷,只有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语言—第二次作业

    1.本章学习内容 1.1思维导图 1.2本章学习体会即代码量学习体会 1.2.1学习体会 在本章中对循环的内容进行了加深训练,学习了一种解决问题的方法循环嵌套,也学到了伪代码的运用,在描述算法是运用伪 ...

  2. 基于JSP的在线考试系统-JavaWeb项目-有源码

    开发工具:Myeclipse/Eclipse + MySQL + Tomcat 系统简介: 网络考试系统主要用于实现高校在线考试,基本功能包括:自动组卷.试卷发布.试卷批阅.试卷成绩统计等.本系统结构 ...

  3. KVM到KVM之v2v迁移

    1.源KVM虚拟主机node1 (1).查看源KVM虚拟主机上的虚拟机列表,本文计划将oeltest01虚拟机迁移到其它KVM虚拟主机中. (2).查看oeltest01虚拟机磁盘文件位置/data/ ...

  4. IDEA去除 xml 中Sql语句的背景

    去掉黄色背景 去掉绿色背景

  5. 【文文殿下】【HAOI2008】硬币购物

    题目描述 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 数据规模 di,s<=1 ...

  6. Codeforces Global Round 2部分题解

    传送门 好难受啊掉\(rating\)了-- \(A\ Ilya\ and\ a\ Colorful\ Walk\) 找到最后一个与第一个颜色不同的,比一下距离,然后再找到最左边和最右边与第一个颜色不 ...

  7. 《快学Scala》第四章 映射与元组

  8. centos绑定https

    1.百度云申请免费ssl证书 一年一申请 2. https://www.wosign .com /faq/faq-apache-https.htm 3.注意ssl.conf里面各个证书的顺序 证书路径 ...

  9. django 运行报错汇总

    记录自己在使用django开发过程中遇到的问题,不间断更新. (1) 独立运行普通Python脚本调用django中定义的类报错 报错信息: django.core.exceptions.Improp ...

  10. C# ListView用法详解 很完整

    一.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有意义. (2) GridLines:设 ...