当前位置: 首页 > news >正文

RGB与CMYK互转

先定义一个CMYK数据结构:

typedef struct struCMYK
{int	m_nC;int	m_nM;int	m_nY;int	m_nK;
}CMYK;

RGB转CMYK

void CvtRGB2CMYK(COLORREF& clr, CMYK& cmyk)
{double dR = GetBValue(clr) / 255.0;double dG = GetGValue(clr) / 255.0;double dB = GetRValue(clr) / 255.0;double dC, dM, dY;double dK = 1 - max(dR, dG, dB);if (dK == 1.0){dC = 0.0;dM = 0.0;dY = 0.0;}else{dC = (1 - dR - dK) / (1 - dK);dM = (1 - dG - dK) / (1 - dK);dY = (1 - dB - dK) / (1 - dK);}cmyk.m_nC = (int)(dC * 100);cmyk.m_nM = (int)(dM * 100);cmyk.m_nY = (int)(dY * 100);cmyk.m_nK = (int)(dK * 100);
}

CMYK转RGB

void CvtCMYK2RGB(CMYK& cmyk, COLORREF& clr)
{double dK = cmyk.m_nK / 100.0;double dC = cmyk.m_nC / 100.0;double dM = cmyk.m_nM / 100.0;double dY = cmyk.m_nY / 100.0;double dR = (1 - dK) * (1 - dC);double dG = (1 - dK) * (1 - dM);double dB = (1 - dK) * (1 - dY);int nR = dR * 255;int nG = dG * 255;int nB = dB * 255;SStringW sstrClr;sstrClr.Format(L"rgb(%d,%d,%d)", nR, nG, nB);clr = GETCOLOR(sstrClr);
}

这种处理方式的不足之处是RGB与CMYK在互转过程中会损失精度。

http://www.lryc.cn/news/435354.html

相关文章:

  • 滴~“TOP期刊体验卡”已到期!公认水刊的尽头,还得是你MDPI
  • ASUS华硕ROG幻16 Air 2024款锐龙AI版GA605WI,GA605WV工厂模式原厂Win11系统,含MyASUS WinRE恢复重置还原功能
  • 想入行在线教育?你必须知道的十件事
  • EasyExcel相关整理
  • 2024年【汽车驾驶员(技师)】考试题及汽车驾驶员(技师)找解析
  • [C#学习笔记]接口的特性与用法
  • java发送邮件报错,Could not connect to SMTP host: smtp.exmail.qq.com, port: 465
  • 开放式耳机有哪些好处?性价比排行前十的四款蓝牙耳机推荐
  • FreeRTOS(速记版)
  • 解锁中东市场新蓝海:Bigo社交媒体如何赋能APP广告营销优势
  • 【网络】DNS
  • 如何使用ChatGPT,完成学术论文文献综述的编写?
  • 探索GPU算力在大模型和高性能计算中的无限潜能
  • 【信创】统信UOS图形界面登录闪退的解决方法
  • 排序(插入,希尔,选择,堆,冒泡,快速,归并,计数)
  • 【recast-navigation/源码解析】findStraightPath详解以及寻路结果贴边优化
  • ‌移动管家手机智能控制汽车系统
  • 828华为云征文|华为云Flexus X实例Redis性能加速评测及对比
  • 【OpenCV3】图像的翻转、图像的旋转、仿射变换之图像平移、仿射变换之获取变换矩阵、透视变换
  • 不要认为996是开玩笑
  • 精益工程师资格证书:2024年CLMP报名指南
  • 【Unity基础】如何选择脚本编译方式Mono和IL2CPP?
  • 写在OceanBase开源三周年
  • 【笔记】408刷题笔记
  • GitHub Star 数量前 13 的自托管项目清单
  • js实现生成随机数值的数组
  • 视频怎么转换成mp3格式?分享5种便捷的转换方法
  • Reflection 70B如何革新语言模型的准确性与推理能力
  • 覆盖索引是什么意思?
  • 最大间距问题