CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

求RGB和CMYK的互相转换组件

楼主lsxr(coolyibai)2005-03-29 15:59:53 在 .NET技术 / C# 提问

由于颜色空间存在很大差异,需要对RGB做必要的转换,最好可以达到Photoshop的那种调整效果,GDI+是否有呢,或者有其他的吗?谢谢! 问题点数:50、回复次数:5Top

1 楼haibuo1981(清)回复于 2005-03-29 20:38:16 得分 0

问题不错,帮顶了Top

2 楼tajlolo(tajlolo)回复于 2005-03-29 22:09:17 得分 40

CMYK_ADOBE_COLORSPACE:  
  r   =   (k*c)/maxval;  
  g   =   (k*m)/maxval;  
  b   =   (k*y)/maxval;    
   
  以上是   adobe   的   CMYK   到   RGB转换公式,下面再来看看   RGB   如何   转换为   CMYK  
   
  下面的语句是经过改写的适用于   Flash   的   actionscript  
   
   
  //   RGB   to   CMY   色彩转换  
  function   rgbtocmy   ()   {    
  mycyan   =   255   -   myred;    
  mymagenta   =   255   -   mygreen;  
  myyellow   =   255   -   myblue;  
  correctCMYK();  
  }    
   
  //   CMY   to   RGB   色彩转换    
  function   cmytorgb   ()   {  
  myred   =   255   -   mycyan;  
  mygreen   =   255   -   mymagenta;  
  myblue   =   255   -   myyellow;  
  correctCMYK();  
  }    
   
  //   CMYK   色彩修正  
  function   correctCMYK   ()   {  
  if   (rep_v   !=   "ERR")   {  
  var   temp   =   Math.min(Math.min(mycyan,   mymagenta),   myyellow);  
  if   (temp   !=   0)   {  
  temp2   =   Math.round((rep_v   /   100)   *   temp);  
  rep_k   =   Math.round((temp2   /   255)   *   100);  
  rep_c   =   Math.round(((mycyan   -   temp2)   /   255)   *   100);  
  rep_m   =   Math.round(((mymagenta   -   temp2)   /   255)   *   100);  
  rep_y   =   Math.round(((myyellow   -   temp2)   /   255)   *   100);  
  }   else   {  
  rep_c   =   Math.round((mycyan   /   255)   *   100);  
  rep_m   =   Math.round((mymagenta   /   255)   *   100);  
  rep_y   =   Math.round((myyellow   /   255)   *   100);  
  rep_k   =   0;    
  }    
  }    
  }    
   
  我们知道,   RGB   和   CMYK   并不能一一对应,这里面存在的问题是黑色部分的替换值的取值问题。  
   
  但是,   RGB   所可以全部对应的,是CMY   格式,其最取值范围是0-255。从色轮上我们可以很容易的了解到这其中的补色计算关系。因此,CMY   和   RGB   的对换   可以说是“无损,可逆转”的。  
   
  当从RGB   得到相应的CMY   之后,我们若要得到   CMYK   值,就必须定义一个“黑色替换值”,也就是说提取各色通道中的若干成分来形成黑色通道。CMYK   的取值是   0-100。  
   
  这个“黑色替换值”的取值不同,得到的CMYK分量分布也就不同。也就是我们在photoshop里面可以选择   CMYK   的分色方案为   “UCR”或者“GCR”的不同。  
   
  “黑色替换值”越大,CMYK图像在印刷时的偏色几率就越小,但相应的状况是图片彩墨分量在暗黑部位显薄,不够饱和。这种分色方式适用于印刷材质较薄或较粗糙,印刷精度不高的场合。  
   
  附注:为什么直接去色和直接转换灰度比   Lab   的   L   通道得到的灰度层次显得差?  
   
  我们还是来用色彩转换公式说话来比较:  
  L   =   0.3R+0.59G+0.11B  
  Gray   =   (R+G+B)/3  
   
  我们很容易就看出区别,平均取值的灰度和根据色彩明度增益比例混合的值是完全不同的。  
   
  Top

3 楼tajlolo(tajlolo)回复于 2005-03-29 22:11:50 得分 10

mark一下,这是我在网上找的,等我有空了用C#写一下,actionScript是FLASH的脚本语言,很简单的.Top

4 楼Net_Soul(网 魂)回复于 2005-03-30 00:39:41 得分 0

这些颜色空间的转换你可以看看图像处理编程相关的书,里面都有。Top

5 楼lsxr(coolyibai)回复于 2005-03-31 18:02:19 得分 0

RGB2CMYK这个能下载到哇,我看到一个网站是uk的,就是无法开启Top

相关问题

  • rgb和cmyk,还有hsb之间的转换
  • 谁有简繁转换的组件
  • 如何把有源代码的COM组件转换为非COM组件的DLL
  • 请教高手,哪位熟悉TranslateColors()的用法,我想用它来作RGB->CMYK的转换
  • RGB-HSB-CMYK-Lab转换算法,Photoshop Colorpicker实现方法,欢迎图形图像高手进来讨论!
  • 请问谁有‘国标大五玛转换组件’!!!!!?????
  • CMYK转RGB?
  • 关于把一个字符串作为组件名称转换为相应组件类型的问题(在线)
  • 有一组件名为tom如何,我如何使一字符串'tom'转换为组件.再用组件的方法等???
  • Delphi中的TStringList转换成COM组件的类型,不知哪一个匹配?

关键词

  • 转换
  • cmyk
  • mycyan
  • mymagenta
  • myyellow
  • rgb
  • 取值
  • rep
  • correctcmyk
  • cmy

得分解答快速导航

  • 帖主:lsxr
  • tajlolo
  • tajlolo

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo