使用 ICC 配置文件将 RGB 转换为 CMYK

2023-12-30

我即将将 RGB 颜色转换为 CMYK 以便打印。 此转换的规模是 Adob​​e Photoshop( Image -> Mode -> CMYK color )

我尝试了 2 个解决方案,但没有一个返回正确的值:

解决方案 1 - 使用 .NET Framework

首先,我遵循以下步骤

  • 从以下位置下载 ICC 配置文件(Windows 版本)Adobe http://www.adobe.com/support/downloads/detail.jsp?ftpID=4075

  • 转换#color to CMYK https://github.com/Aether-Hemera/DMX-Deck/blob/master/Serial%20DMX%20Winforms%20Deck/SerialDmxDeck/ColorSpace/ColorSpaceHelper.cs#L637

  • used System.Windows.Media.Color.FromValues // return Color

  • string convretedColor = string.Format("#{0:X2}{1:X2}{2:X2}", _color.R, _color.G, _color.B)

这是结果:

  • 轮廓 :CoatedFOGRA27.icc

  • 原色:#2f00ff

  • 转换后的颜色:#3b4996

  • 使用 Adob​​e Photoshop(相同配置文件)的转换结果:#3b4996 差远了! http://jsfiddle.net/edbze/

解决方案 2 - 使用 Windows 颜色系统 (WCS)

我也尝试过科多的解决方案 https://stackoverflow.com/a/5251318/191220用同样的程序

这是结果:

  • 轮廓 :CoatedFOGRA27.icc

  • 原色:#2f00ff

  • 转换后的颜色:#2032FF

  • Photoshop:#3b4996

JSFiddle 进行比较 http://jsfiddle.net/edbze/1/

EDIT

根据 Codo 的评论,我认为,我在理解颜色概念方面存在一些基本问题! (如果我错了请纠正我)

对于任何颜色,我们都有不同的颜色模型,RGB , CMYK, ...

RGB显示(红、绿、蓝)的组合来生成颜色以及 CMYK(青色、洋红色、黄色 *)。这些模型的值可以轻松地相互转换。

例如 http://web.forret.com/tools/color.asp?rgb=2f00ff :

  • RGB 十六进制:#2F00FF

  • RGB : 47 - 0 - 255

  • CMYK : 0,816 - 1,000 - 0,000 - 0,000

几乎所有显示器都使用RGB显示颜色。打印的颜色(因为使用墨水而不是 LED o ...)与您在显示器上看到的颜色完全不同/

对于这个问题,像 Photoshop 这样的图像编辑器使用CMYK **MODE**.在此模式下,如果您选择RGB颜色,编辑器将其转换为您在打印后看到的颜色并将其显示到屏幕上。此转换绝对取决于颜色配置文件(此处为 ICC )

EDIT 2


让我尝试帮助您解决所有问题:

1) RGB是一种描述颜色值的格式。即:255,0,0 表示红色。

2) HSV 是另一种描述颜色值的格式。即:红色为 0,100,100

这两个是唯一能够为您提供数字准确颜色的颜色,
您可以将它们视为颜色的数字表示,或者它是真实的 DNA,感谢上帝,显示器能够准确地呈现它们 - 正是它们的本来面目。

让我们继续前进:

3) Lab 是描述颜色值的另一种格式。

54,81,70 对于红色 RGB 来说是 (255,0,0) 然而..
54,81,70也可以适用于不同的RGB..(254,0,0)

这是为什么?因为 Lab 格式是为了近似人类视觉而设计的。
对于人眼来说 (255,0,0) 和 (254,0,0) 之间没有区别
嗯..对于人眼来说不太准确..
更准确地说,用于获得 Lab 颜色的模型旨在..

4) CYMK 旨在告诉打印机要压到纸张上的青色、黄色和品红色的混合颜色,以及告诉打印机要压到该混合颜色上的深色颜色(浅色或黑色)。

所以 0%,100%,100%,0% 会给我们红色的混合物。
0%,50%,50%,0% 会给我们粉红色。

让我们继续前进:

您的工作是将显示器中看到的 RGB 调整为打印机的 CMYK。
天知道你为什么要这样做,因为它已经是全自动的,并且由司机操作了很多年。
但我认为你有你的理由,所以让我们继续,
每台打印机的 CMYK 值都略有不同,需要混合才能获得特定的红色。

这就是 ICC 配置文件发挥作用的地方。
他们通过提供 (1) 原始 RGB-RED 的表格,给出了示例中的 RED 标准 (2) 特定打印机中的 CMYK 红色。

因此,根据 ICC 配置文件从 RGB(红色)转换为 CMYK(红色)是符合逻辑的愿望。

但如果您尝试转换回来 - 您会注意到根据特定配置文件的 RED 的 CMYK 可以有多个数字 RED 值。

这是因为数字颜色分辨率比结果准确得多 一张打印的论文,另一种看待它的方式是说特定的打印机 ICC 可以建立在 Lab 上。

现在我知道..我知道..你可能已经知道其中的大部分(如果不是全部)。
(我写它只是为了确保我们都在书中的同一页上。)

所以,当你说“它们都没有返回正确的值”时 (假设它们=转换)你到底是什么意思?! 对我来说一切似乎都是正确的,因为事实上它们确实返回了正确的值 - 用于打印目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ICC 配置文件将 RGB 转换为 CMYK 的相关文章

  • 使用 C#.net 中的私有存储库的身份验证读取 BitBucket API

    我已经尝试了几天让 BitBucket API 为我工作 但是当涉及到让它为具有身份验证的私有存储库工作时 将问题设置为私有 当它们设置为公开 无需身份验证 一切正常 代码示例如下 static void Main string args
  • 为什么模板类的静态成员不唯一

    看一下下面的代码 include
  • 从 unsigned char* 到 char* 的转换无效

    这是一个代码 1 int main int argc char argv 2 3 signed char S psc 4 unsigned char U pusc 5 char C pc 6 7 C S 8 C U 9 10 pc psc
  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • ptrace和waitpid有什么关系?

    我正在练习使用ptrace但我不太了解它和之间的关系waitpid 这是我的测试程序 int main int argc char argv pid t pid 22092 if ptrace PTRACE ATTACH pid NULL
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 为基于架构的 XML 文件创建 WPF 编辑器

    这是场景 我们的服务器产品之一使用大型 XML 配置文件 该文件的布局相当好 并且针对 XSD 文件进行了验证 现在是时候构建一个配置 GUI 来维护这个文件了 我想深入研究 WPF 来完成它 我可以为每个配置部分布置一个单独的表单 每次向
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • C# 中不区分大小写的替换不使用正则表达式?

    有没有一种方法可以在不使用 C 中的正则表达式的情况下对字符串进行不区分大小写的替换 像这样的东西 string x Hello x x Replace hello hello world 你可以尝试类似的东西 string str Hel
  • 是否可以在对Where 的调用中调用命名方法?

    我试图从 RedGate 的这本免费电子书中了解 Linq 的一些性能影响ftp support red gate com ebooks under the hood of net memory management part1 pdf f
  • 这个元组创建习惯有名字吗?

    On the 增加邮件列表 http lists boost org Archives boost 2014 06 214213 php LouisDionne 最近发布了以下创建类似元组的实体的巧妙技巧 include
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta
  • 使用 C# 的异步 WebRequest

    您好 我有一个函数 它将 url Get 参数传递到网络服务器上的 php 文件 并等待文件的响应 通常需要 10 20 秒 我想将其放入一个循环中 因为我必须一次将这些 Get 请求发送到大约 5 个不同的 php 文件 但是当我尝试将其
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 查找文本文件中每行的行大小

    如何计算每行中的字符或数字数量 是否有类似 EOF 的东西更像是行尾 您可以遍历行中的每个字符并不断增加计数器直到行尾 n 遇到 确保以文本模式打开文件 r 而不是二进制模式 rb 否则流不会自动将不同平台的行结束序列转换为 n 人物 这是
  • 如何在c#中获取斐波那契数

    伙计们 我有一个关于斐波那契的问题 如何获得斐波那契数列 该数字也将以用户输入结束 例如 如果我输入 21 则输出必须为 0 1 1 2 3 5 8 13 21 这是我的代码 static void Main string args int
  • 从最大到最小的3个整数

    我是 C 初学者 我使用 编程 使用 C 的原理与实践 第二版 问题如下 编写一个程序 提示用户输入三个整数值 然后以逗号分隔的数字顺序输出这些值 如果两个值相同 则应将它们排列在一起 include
  • C#“var”关键字在 VB.NET 中的等价物是什么?

    例如 我如何获得 VB NET静态类型局部变量是static赋值右侧的表达式的类型 像这样 Dim http msdn microsoft com en us library 7ee5a7s1 aspx我的变量 3 你还需要 选项推断 ht

随机推荐

  • 如何更改opentok javascript SDK中的音频输出?

    连接到移动浏览器时 音频始终默认为纯音频扬声器 即靠近耳朵的手机扬声器 我不知道这叫什么 而不是扬声器 如何让它默认使用扬声器并让用户选择使用哪个扬声器 移动 SDK 的文档中有此内容 但在 JavaScript SDK 中 只有音频源有等
  • 使用Linq to对象,如何轻松创建的空字典?

    要创建一个空序列 可以使用以下命令 var empty Enumerable Empty
  • 如何转义 URL 中的哈希字符

    我怎样才能逃脱 URL 的查询字符串中发送的哈希符号 有时称为数字符号或井号 百分比编码 https en wikipedia org wiki Percent encoding 将哈希替换为 23
  • libsandbox 和 pysandbox 的限制功能

    我正在使用sample2 py此处列出https github com openjudge sandbox https github com openjudge sandbox作为调用沙箱库的包装器 又名 libsandbox pysand
  • 如何使用 R Shiny 从数据库填充下拉列表?

    我想用数据库查询的结果填充 R 闪亮应用程序中的下拉列表 I have a global r file where i put this code getData lt function this function returns a si
  • 停止 Android Studio 使用支持库

    我试图让 Android Studio 中的 Android 项目不使用支持库 我的问题是 当我使用片段时 它需要支持片段并导致应用程序崩溃 我的 Min SDK 是 14 我的 Target SDK 是 19 我的理解是 因为我的目标是这
  • Flask + Flask-Security + Babel 不工作

    我已经设置了 Flask Babel Flask Security 像这样创建所有翻译 root main py translations ru LC MESSAGES 消息 mo 消息 po 在 main py 中 有一部分设置语言执行
  • Struts2:全局结果配置错误

    我想使用全局结果 登录 但它仅在配置中没有全局结果的情况下才有效 这是我的配置的相关部分 类别列表 jsp 类别详细信息 jsp WEB INF login jsp 当我启动我的应用程序时 它会抛出此异常 org xml sax SAXPa
  • 如何将文本文件包含到JavaScript中

    有没有办法将另一个文件中的一些文本加载到 javascript 中 而不需要服务器端代码 我正在考虑使用另一个元素来保存一些注释中的文本 但我不知道如何使用 javascript 读取它的源代码 就像是 在 myfile js 中 some
  • 重载 << 运算符 C++ - 指向类的指针

    class logger logger operator lt lt logger log const std string str cout lt lt My Log lt lt str lt lt endl return log log
  • iOS 中的 Amazon S3 POST 上传

    我有一个服务器 它生成 AWSAccessKeyID acl 策略 签名等参数 用于使用 POST 将文件上传到 S3 如下所示 http doc s3 amazonaws com proposals post html http doc
  • 如何在 .NET 4.0 的实体框架中进行“like”通配符比较?

    我正在使用 Visual Studio 2010 RC for NET 4 0 我试图弄清楚如何与实体框架进行通配符比较 我想要对 EF 进行以下查询 在其中找到所有以 J 开头的名称 select from Users where Fir
  • Cloud Dataflow - 增加 JVM Xmx 值

    我们正在尝试在云中运行 Google Cloud Dataflow 作业 但我们不断收到 java lang OutOfMemoryError Java 堆空间 我们正在尝试处理 Big Query 表中的 6 1 亿条记录 并将处理后的记
  • Mapbox fitbounds() - 无效的 LngLat 对象:(NaN, NaN)

    在过去的几个小时里 我一直用头撞桌子 我试图让 Mapbox 放大所有标记的边界区域的负载 但是 这是我在下面的代码中遇到的错误 此错误出现在下面的控制台日志图像之后 因此 lat lng 坐标肯定存在 未捕获的错误 无效的 LngLat
  • 如果仓库自动查看自述文件,自述文件中的相对链接就会损坏

    我有一个仓库作为 github 上组织的一部分 例如 MYORGANIZATION MyRepository 该存储库包含一个 README md 文件 在此 README md 文件中 我有一个链接 因此另一个 md 文件位于与 READ
  • Xampp-mysql - “引擎中不存在表”#1932

    移动 xampp 文件夹后出现 Xampp 错误 Apache 运行良好 如下图所示 我成功运行 apache 但无法运行 mysql 如果我移动并运行 xampp apache 和 mysql 但它显示的错误是新鲜的 并且显示类似 引擎中
  • 将 exec-maven-plugin 的输出分配给变量

    我想使用 exec maven plugin 来获取 git revision 所以我使用以下配置
  • 用于执行 python 脚本的 Vim 键映射

    我第一次尝试在 Vim 中映射命令 我希望它执行当前的 python 脚本 所以我将以下内容放入我的 vimrc noremap
  • 添加 $ 并舍入小数点后 2 位 SQL

    我正在寻找格式化由子查询创建的输出 该子查询生成一个计算字段 我希望将其格式化为 XX XX 子查询 select avg retail from cars where brand FORD or brand TOYOTA as AVG B
  • 使用 ICC 配置文件将 RGB 转换为 CMYK

    我即将将 RGB 颜色转换为 CMYK 以便打印 此转换的规模是 Adob e Photoshop Image gt Mode gt CMYK color 我尝试了 2 个解决方案 但没有一个返回正确的值 解决方案 1 使用 NET Fra