【C#】RGB转CMYK
时间:2019-03-18
本文章向大家介绍【C#】RGB转CMYK,主要包括【C#】RGB转CMYK使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
由于目前印兔项目中的在线设计功能设计出来的产品颜色模式不确定,但是客户设计出来的产品需要发送到印厂的客户端去下载并且印刷,只有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(1970, 1, 1))).TotalMilliseconds + ".jpg"; magickImage.Write(path); magickImage.Dispose(); MessageBox.Show("图片已转换CMYK模式!\n 路径:" + path);
就简单的几句代码就OK了
本人技术不精,就是个人研究,也不确定这样写是不是正确,只是作为个人的一个积累,也希望给后边的人一个借鉴,坐等大佬安排 !!!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 详解Linux服务器状态、性能相关命令
- 【s3cmd】给s3cmd加点debug日志再编一个
- Linux获取当前脚本真实路径的方法
- 短视频商城源码,商城左侧菜单栏网页模板
- 谈一谈Linux系统重要的子目录问题
- Tensorflow 2.x Java api的maven包怎么找
- Linux上也有10个流行的Windows应用程序
- (译)SDL编程入门(14)动画精灵和VSync
- 在Ubuntu Linux上安装和使用Git和GitHub
- 10个好用的 HTML5 特性
- Linux下升级python和安装pip的详解
- Linux中使用top命令的技巧
- Linux中查找工具的友好替代方案
- 使用命令行检测Ubuntu版本方法
- 一键实现 PowerBI 度量值批量重命名