UIColor CMYK 和 Lab 值

2023-12-03

简单的问题,很可能复杂的答案:

如何从 UIColor 对象获取 CMYK 和 Lab 值(如果有帮助的话,我知道其中的 RGB 值)?

我发现了有关获取 CMYK 值的信息,但我无法从中获取任何准确的值,尽管它无处不在,但我听说这不是一个很好的片段。

CGFloat rgbComponents[4];
    [color getRed:&rgbComponents[0] green:&rgbComponents[1] blue:&rgbComponents[2] alpha:&rgbComponents[3]];

    CGFloat k = MIN(1-rgbComponents[0], MIN(1-rgbComponents[1], 1-rgbComponents[2]));
    CGFloat c = (1-rgbComponents[0]-k)/(1-k);
    CGFloat m = (1-rgbComponents[1]-k)/(1-k);
    CGFloat y = (1-rgbComponents[2]-k)/(1-k);

对于基于 ICC 的颜色转换,您可以使用小色彩管理系统。 (我刚刚将下载存档中的所有 .c 和 .h 文件添加到 iOS Xcode 项目中。它编译并运行了以下代码,没有出现任何问题。)

Remark:RGB 和 CMYK 是一个设备依赖的色彩空间,Lab 是一个设备独立的色彩空间。因此,要从 RGB 转换为 Lab,您必须选择与设备无关(或“校准”)的 RGB 颜色空间进行转换,例如 sRGB。

Little CMS 附带 sRGB 和 Lab 色彩空间的内置配置文件。从 sRGB 到 Lab 的转换如下所示:

创建颜色变换:

cmsHPROFILE rgbProfile = cmsCreate_sRGBProfile();
cmsHPROFILE labProfile = cmsCreateLab4Profile(NULL);
cmsHTRANSFORM xform = cmsCreateTransform(rgbProfile, TYPE_RGB_FLT, labProfile,
                                         TYPE_Lab_FLT,
                                         INTENT_PERCEPTUAL, 0);
cmsCloseProfile(labProfile);
cmsCloseProfile(rgbProfile);

转换颜色:

float rgbValues[3];
// fill rgbValues array with input values ...
float labValues[3];
cmsDoTransform(xform, rgbValues, labValues, 1);
// labValues array contains output values.

处理颜色转换:

cmsDeleteTransform(xform);

当然,转换只会创建一次并用于所有颜色转换。

对于 RGB 到 CMYK 的转换,您也可以使用 Little CMS,但您必须提供 ICC 配置文件,例如一个来自免费的 Adob​​e 下载页面适用于 Mac OS 的 ICC 配置文件下载.

RGB 到 CMYK 转换的代码示例:

float rgb[3]; // fill with input values (range 0.0 .. 1.0)
float cmyk[4]; // output values (range 0.0 .. 100.0)

cmsHPROFILE rgbProfile = cmsCreate_sRGBProfile();

// The CMYK profile is a resource in the application bundle:
NSString *cmykProfilePath = [[NSBundle mainBundle] pathForResource:@"YourCMYKProfile.icc" ofType:nil];
cmsHPROFILE cmykProfile = cmsOpenProfileFromFile([cmykProfilePath fileSystemRepresentation], "r");

cmsHTRANSFORM xform = cmsCreateTransform(rgbProfile, TYPE_RGB_FLT, cmykProfile,
                                         TYPE_CMYK_FLT,
                                         INTENT_PERCEPTUAL, 0);

cmsCloseProfile(cmykProfile);
cmsCloseProfile(rgbProfile);

cmsDoTransform(xform, rgb, cmyk, 1);

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

UIColor CMYK 和 Lab 值 的相关文章

  • 如何从 Class - Swift 实现序列化 NSDictionary

    在 Objective C 中 我使用以下代码将自定义类序列化为工作正常的字典 为了熟悉Swift 将Objective C代码移植到Swift 但是我无法实现这一点 我该如何用 Swift 实现这一点呢 这就是我用 Objective C
  • Objective-C 继承中@synthesize/@property 的使用

    如果您有一个带有实例变量 foo 的类 A 该类具有 property synthesize 指令 并且类 B 继承自类 A 那么它是否还需要 property synthesize foo 我问的原因是因为当我尝试使用 B 类的 foo
  • 在 UIViewController 上添加 UIView

    我想在 uiviewcontroller 上添加一个 自定义 uiview 这个自定义视图是我用 xib 创建的 它与视图控制器分开 有谁知道如何将带有 xib 的 uiview 添加到 uiviewcontroller 中 提前谢谢了 您
  • Objective-C 实现文件中方法名后面的分号

    void designImageViewNow some code here 分号写法正确吗 就在实现文件 Objective C 中方法名称之后 正文括号之前 这行得通吗 当我正在开发 iPhone 应用程序时 我错误地将分号放在了一个自
  • 将 NSDecimalNumber 转换为 NSString

    我正在从如下所示的对象中检索密钥 po obj TypeID 3 TypeName Asset 键值的检索方式如下 NSString typeId NSString obj objectForKey TypeID typeId 不是 NSS
  • 在 xcode 中使用线程调用函数

    我在 xcode 中创建了一个线程 并且给出了从该线程调用的函数名称 但我的问题是 给 call 的函数名称没有被调用 知道何时在该函数中放置断点 code NSThread myThread myThread start self per
  • for 循环内存不足

    嘿 所以我认为如果我制作一个生成随机密码的小应用程序 然后让该应用程序运行所有可能性并尝试查看密码是什么 告诉我它尝试了多少次 那会很酷 有时应用程序可以工作 有时会崩溃 具体取决于密码是什么 我想知道是否可以采取任何措施来防止它因占用大量
  • UIAlertController 在 iOS 9 中不工作

    I have added the UIAlertController code showing login and password textfields it works for iOS 8 but in iOS 9 not works
  • UITextField 文本更改事件

    如何检测文本字段中的任何文本更改 委托方法shouldChangeCharactersInRange适用于某些东西 但它并不能完全满足我的需求 因为在它返回 YES 之前 textField 文本不可用于其他观察者方法 例如在我的代码中ca
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • 如何使用 iPhone SDK 实现可滑动的图像堆栈(例如照片应用程序)?

    我想获取一堆图像 或者可能是一组用于下载图像的 URL 并以全屏方式显示它们 一次一个 使用 iPhone SDK 使用用户滑动来平滑地为堆栈中的下一个图像设置动画 Apple 的 Photo app 似乎可以做到这一点 此外 如果尚未检索
  • 在 Objective-C 中比较 2 个字符串

    我写了以下代码 if depSelectedIndice gt 1 comSelectedIndice gt 1 NSLog depart elemet d depSelectedIndice NSLog depart elemet d c
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • Postgres 中的递归 CTE

    我有一个结构如下的表 Employee ID Employee Name Manager ID 而且 对于每个员工 我都需要出示最高管理者的 ID 我的意思是 例如 如果我有 EmployeeID 2 其经理为 3 因此 数字 3 的经理为
  • 如何允许某些特定IP地址访问我的WCF服务

    我有一个 WCF 服务返回 xml 我只想要一个 IP 地址来访问它 例如 10 0 0 5 有人可以告诉我我该怎么做吗 请告诉我除防火墙和 IIS 之外的其他内容 您需要添加 ip 过滤 如下所示 https stackoverflow
  • 将文本值输入到 div 中?

    假设我有这个文本框
  • IPv6 的示例数据?

    是否存在 IPv6 流量的示例数据集 例如Apache 日志还是流量分析日志 或者 是否有人有任何想法如何生成一个或 乐观地 现有工具来生成数据 理想情况下 我希望实际部署的示例地址与该范围内的地址数量和 或来自这些范围的预期流量成比例 即
  • 访问资源目录路径

    看起来 NSBundle mainBundle pathForResource name ofType png 对于 Images xcassets 资产目录内的资产 不返回任何内容 我也尝试过 NSBundle mainBundle pa
  • 雅虎 YQL RSS - 错误请求

    为了使用 jQuery 发出跨域 AJAX 请求 我尝试使用 YQL RSS select from rss where url https www top1000funds com feed most popular posts My c
  • C++中如何将字符串转换为char *?

    我怎样才能转换string in to char 我使用了以下方法 但它不起作用 在运行时它给我以下错误 运行时检查失败 3 变量 url 正在被使用而没有 正在初始化 尽管我已经将其初始化 如下面的代码所示 你能给我举个例子吗 char
  • 具有动态键的对象的 Apollo/GraphQL 字段类型

    假设我的 graphql 服务器想要以 JSON 形式获取以下数据 其中person3 and person5是一些 id persons person3 id person3 name Mike person5 id person5 na
  • JTable 基于隐藏列的排序

    我想排序JTable基于一个隐藏列的行 假设我有一个像这样的 JTable column1 column2 val1 val2 现在我又多了一个被隐藏的column3 我不想显示 当用户单击 Column2 时 它应该根据 Column3
  • 在 JavaScript 中创建特定时区的日期对象并将其转换为 UTC

    我的应用程序当前以以下格式存储特定事件的日期和时间 date 2022 05 06 time 00 00 12 00 AM 每个事件的时间还包含与其关联的时区 如果组织活动的人来自新加坡 那么时区将亚洲 新加坡 当我向与会者发送此活动的日历
  • 使用delphi以编程方式执行防病毒程序

    我编写了一个小应用程序来使用 indy 组件传输文件 现在我想在传输完成后启动防病毒程序来检查文件 下载完成后 如何执行客户端安装的防病毒程序 UPDATE下载文件时我需要实现类似于 Firefox 的功能 然后执行机器中安装的防病毒软件
  • 如何以编程方式设置拨号连接的“自动配置脚本”?

    我在 Internet 选项 gt 连接 中有一个拨号连接 我想以编程方式为其设置一个 自动配置脚本 连接设置之一 将其设置为 LAN 很容易 但我找不到有关将其设置为其他连接的任何信息 好的 我已经解决了 实际上 它以与存储 LAN 设置
  • 如何使用基于 JWT 的身份验证处理文件下载?

    我正在用 Angular 编写一个 Web 应用程序 其中身份验证由 JWT 令牌处理 这意味着每个请求都有一个包含所有必要信息的 身份验证 标头 这对于 REST 调用非常有效 但我不明白应该如何处理后端托管文件的下载链接 文件驻留在托管
  • 混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart`

    下面的微数据标记工作得很好 Google 的结构化数据测试工具显示一个CollectionPage and WebSite WebPage作为孩子 span a href https springfield xxxx us Official
  • 如何在 C# 中使用 Delphi Dll(带 PChar 类型)

    下面是 Delphi DLL 代码 library Project2 uses SysUtils Classes R res function SimpleConv const s string string var i Integer b
  • PairGrid 与 Seaborn 中的 Hexbin 绘图

    我正在尝试在 Seaborn 网格中获取 hexbin 图 我有以下代码 Works in Jupyter with Python 2 Kernel matplotlib inline import seaborn as sns impor
  • 将图像图标从触摸位置动画到右上角?

    我正在开发 Android 在线购物应用程序 我必须应用一些动画 购物车图像显示在屏幕的右上角 屏幕上的项目列表中的每个项目都带有 添加到购物车 按钮 当用户按下此按钮时 我必须播放动画 我有一个固定图像 它应该从触摸位置动画到 购物车图像
  • 将 Jetty 8 升级到 Jetty 9

    我正在从 jetty 8 升级到 jetty 9 并且遇到了一些 API 中编译失败的问题 SslSelectChannelConnector 已被删除 从我可以看到 httpConfiguration 和 secureRequestCus
  • iText:单元格中的图像列表

    我想创建一个包含点列表的表格 我事先不知道我有多少个点 但如果它们溢出单元格 我希望它们换行 就像文本一样 我的代码是这样的 PdfPTable table new PdfPTable 1 table setTotalWidth new f
  • UIColor CMYK 和 Lab 值

    简单的问题 很可能复杂的答案 如何从 UIColor 对象获取 CMYK 和 Lab 值 如果有帮助的话 我知道其中的 RGB 值 我发现了有关获取 CMYK 值的信息 但我无法从中获取任何准确的值 尽管它无处不在 但我听说这不是一个很好的