作者:❄️固态二氧化碳❄️ (主页)
链接:#FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为"品红"(“洋红/Magenta”)是一种误称 - 固态二氧化碳的博客 - CSDN博客
来源:CSDN博客
发表时间:2019年06月02日 18:31:06
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  在开头,我先送上几句关于质疑的名人名言

1.什么都不懂的人,什么都不怀疑。([英国] 赫伯特)
2.只有大规模的怀疑主义才能够揭开把我们同真理隔开的帷幕。([英国] 罗素)
3.自然知识的每一个大进步都包括对权威的绝对否定。([英国] 赫胥黎)
4.哪里有怀疑,哪里就有真理——怀疑是真理的影子。([英国] 贝利)

  我们从小都知道红蓝得紫的道理,这似乎是一件天经地义的事情。然而许多和计算机有关的书,或者某些教程网站上,都会把#FF00FF(255,0,255)(二次色的一种,与黄色,青色并列)称为"品红"(“洋红”)(这似乎有点颠覆我们的认知),但是我第一次看到这种说法时,觉得很古怪,因为我觉得它一点也不红,而是非常的紫,很标准的紫,很符合红蓝得紫的定义(HTML中的紫色(深紫色)是#800080,与#FF00FF色相相同,只是明度的区别,把#FF00FF这样称呼也显得有些把两者区别对待,搞"双重标准"的感觉)。而且明明可以用一个字描述的颜色,非要用两个字表示,有种舍近求远的感觉,并且和其他颜色放在一起说也感觉比较突兀,违和感很强。莫非是因为很多人把某种紫色叫做红色,就好像把某种绿色叫做蓝色一样的道理,只是命名上的问题?
  后来知道了CMYK四色印刷系统,里面的M(Magenta),对应的中文也是品红(其色值为(228,0,127),代码为#E4007F,对应RGB色相327°)。但这种品红和#FF00FF完全不一样(紫色(FF00FF)色相为300°),差别十分明显。这让我产生了怀疑,因为CMYK里的那个品红是玫红色,是真正的红,而那个所谓的"品红"明显是紫色,而不是红色。到底是像把某种绿色叫做蓝色的问题一样,只是命名上的问题,还是本身就叫错了,把两种差异显著,毫无关系的颜色混为了一谈呢?

  要回答这个问题,就得追根溯源,从品红这个颜色的来源说起。品红(洋红)(Magenta)最初的含义是一种化学染料的名称,其名称源于意大利一次独立战争(1859年)的地名,这种染料呈玫红色,也就是现在印刷业中常用的CMYK系统中的颜色之一 ,品红溶液在化学中也是一种常见的试剂,比如用于检验二氧化硫的存在,做过实验的人都知道这种溶液是玫红色,而不是紫色。也就是说,化学和印刷业(CMYK)中的品红这个染料名称出现的时间(19世纪)是先于把FF00FF误称为"品红"的时间(计算机发明以后)的,因为那时连计算机和显示器都没有。所以品红最初的含义就是一种玫红色的染料,和紫色没有任何关系。
  还记得我们高中时化学中检验二氧化硫的方法吗?就是把气体通入品红溶液,观察是否褪色,因为二氧化硫具有漂白性。还有高中生物里的醋酸洋红液和改良苯酚品红染液(低温诱导染色体加倍实验中的),它们的作用都是给染色体染色的。如果你亲自做过实验,就知道这些溶液的颜色是什么了,它们和印刷业中的品红颜色十分相似,然而和#FF00FF却完全不像。

CMYK墨水示意图

  真相总算浮出水面了,CMYK里的品红是真正的品红,没有问题,但是#FF00FF被叫做"品红",则绝对是一种误称,因为这种紫色和化学品红溶液的颜色毫不相干,差异显著。把FF00FF称为"品红"反而会与化学和印刷业中的真正的品红发生混淆,造成误解。然而这种说法在书籍,网络上广为流传,很多人也就默许了这种说法(毕竟他们想紫色里面有红色成分,把它叫做"X红色",错得也不是那么远)。有些人云亦云的人,把某些"专家"的话奉为圭臬,只要是书上说的都认为是权威的,然后就这样以讹传讹,不停地传下去,一传十,十传百,误导了越来越多的人。所以现在的软件也只能将错就错地这样用下去了。那究竟是什么原因导致这种这种误称的形成呢?
  原因很简单,RGB里的二次色黄色(Yellow),青色(Cyan)和紫色(Purple),在RGB(RGI)色相上(不是美术中的红黄蓝(RYB)色相环)与RGB(RGI)正好相对,也就是所谓的光学互补色(不是美术互补色),CMYK里的CMY则是吸收光的,因此理论上RGB(RGI)的光和青(C),紫(P),黄(Y)的颜料是对应的,但实际上并不是。CMYK里的Y和RGB(RGI)里的黄色很接近,C和青色有一定的差别(C比青色更偏蓝),但差得也不远。重点来了,最值得注意的M,也就是品红,与RGB(RGI)里的二次色YCP(Yellow,Cyan,Purple)并不对应,Purple明显是紫色,与M差得十分远,是偏离得最厉害的颜色。M吸收也是绿光,没问题,但是是偏春绿色(原色绿和青色之间的颜色)的光,导致反射光B(I)分量减少,颜色从紫色偏移到玫红色,也就是印刷中M的颜色。
  当初这样叫的人,估计是为了偷懒,把RGB里的二次色和CMYK直接对应了起来,解释起来也就方便了:CMY吸收RGB,一个是减法色,一个是加法色。这种解释看上去比较"完美",他们也就觉得自己发明了一套"完备的理论",殊不知这种理论漏洞百出,有明显的错误,RGB里的二次色实际上是CPY,而并非CMY。但是如果按照他们的说法,CMY的M就和P(#FF00FF)对应了,也成了等价的颜色了,所以干脆就把#FF00FF称为"品红"(“M”)了,这就是这种错误叫法的来源。而这种对应是基于错误的理论的,所以对应的称呼也是错误的。所以我平时说#FF00FF的时候都会说成紫色,或者Purple,简称P。RGB和CMYK之间并没有任何直接的关系,将RGB与CMYK不加思索,(无脑)强行直接对应起来的理论是毫无根据,极其荒谬可笑的。

  正确的理论应该是,CMYK里的M是吸收的是Green,但是并不是RGB(RGI)里的Green,而是偏春绿色的Green,春绿色属于绿色的一种,所以也可以实现减法混色。如果按照理想情况,则是紫色的颜料,但是理想的紫色颜料比较难合成,成本较高(古代紫色可是高贵的象征,是贵族专属的颜色,一般人用不起的,原因也是天然紫色颜料比较稀少,同时也难以合成)。而品红染料成本比较低,合成比较方便,印出来的颜色也比较理想,所以印刷业就采用品红作为油墨颜色之一了。
  所以,我们得出结论,#FF00FF其实就是紫色,把#FF00FF称为"品红"只不过是一种以讹传讹的误称罢了。
  此外,现在网上的RGB转CMYK的转换工具和公式99%都是错的,它们都是基于那个偷懒的错误理论,将RGB和CMYK无脑直接对应起来的(也就是最弱智无脑的Y=(255-X)/255*100之类的公式),如果按照这个公式计算,结果将会错得离谱,和Photoshop里的值完全对不上。然而发布这个工具或者公式的人可能自己都不知道这个问题,就晕晕乎乎地把工具和公式放在网上,导致计算出错误的值,并且还误人子弟(我在网上可以说是基本上找不到一个能够正确地将RGB转换为CMYK的工具和公式的,所以我平时转换主要还是靠Photoshop)。真正的能够将RGB转换为CMYK的算法(也就是Photoshop里的那个算法),应该是先将RGB转换为Lab,再将Lab转换为CMYK。这之间的转换关系非常的复杂,我将会在以后的博文中专门讲解这个算法的。
  在这里给大家推荐一个网站,里面有介绍RGB和CMYK之间转换的正确的方法和工具的,并且讲解得十分详细,希望大家不要再被FF00FF等价于"品红"之类的说法所误导了。
  链接:1.CMYK转换RGB(iCC转换) - ColorTell色彩管理
    2.RGB转换CMYK(iCC转换) - ColorTell色彩管理
    3.应该如何正确地将RGB转成CMYK颜色? – 色彩管理网

总结:
  HTML中紫色RGB为(128,0,128) (#800080 对应RGB色相300°),是一种深紫色,如果将明度提高,变成(255,0,255) (#FF00FF 对应RGB色相300°),则得到偏亮的紫色,也可以叫紫色(Purple)。#FF00FF与HTML中的紫色(#800080)具有相同的色相,因此属于紫色的一种。如果非要将两者区分,则可以将#FF00FF称为「亮紫」(Light Purple)。在一般情况下,#FF00FF完全可以称为紫色(Purple),没有任何问题。
  而品红(Magenta)最初的含义是一种化学染料的名称,其名称源于意大利一次独立战争(1859年)的地名,这种染料呈玫红色,也就是现在印刷业中常用的CMYK系统中的颜色之一,其色值为(228,0,127) (#E4007F 对应RGB色相327°),是一种玫红色(Rose)。而有的人把亮紫色称为"品红",但是事实上这种所谓的"品红"与最初含义的品红,也就是和化学和印刷业中的品红相去甚远,有明显的差异,并非真正意义上的品红,实际上是一种误称。
  此外,有的地方把#FF00FF称为Fuchsia也是一种误称,因为Fuchsia对应的是紫红色,也就是#FF00BF(对应RGB色相315°),并非#FF00FF(紫色,Purple)
  所以,真正意义上的Purple是#FF00FF,Fuchsia是#FF00BF,Magenta是#E4007F。这种把与#800080(深紫色,网页紫色)位于同一色相,只是明度区别的#FF00FF称为"品红",搞"双重标准",将两者区别对待的说法,荒谬至极,毫无根据,实属无稽之谈。

图片测试

  事实胜于雄辩,下面我们会用PS里面的Camera Raw处理几张图片来证明我的观点,也就是证明FF00FF是紫色,它更接近于蓝色而不是红色(并且和红色相去甚远)这张图片是彩虹的光谱图,也就是按从红色到紫色的顺序渐变的一张图片(最左边的颜色是FF0000,最右边的颜色是FF00FF)。我将图片用Camera Raw里的HSL调整进行处理,也就是对图片不同色相部分进行调整,观察图片处理后的效果,即可知道针对某一色相,Camera Raw所调整的颜色范围。

  如下图,左边是彩虹图原图,右边是我分别对其红色、橙色和黄色部分的明度进行处理后的效果。

  我们可以看出,经过处理后,原图的红色、橙色和黄色部分的确分别发生了变化,而图片的其他颜色部分则不受其影响。

  下面我们继续对其绿色、浅绿色、蓝色、紫色部分的明度进行处理。

  图片的这四个部分也正如我们所料,分别发生了变化。我们还发现,在调整紫色部分的时候,图片最右边(FF00FF)发生了变化,证明它属于紫色的范围。接下来的是重点,我将"洋红"这个调整条也拉到最右边,让我们看看图片是否会发生变化。

  答案是否定的,我们也就证明了FF00FF是紫色而不是品红。

  那真正的品红的范围是什么呢?下面我再给出一张图片,这张图是从紫红(品红)到红色的渐变,图片的左边1/3大概就是通常所认为的"品红"的区域。我将"洋红"这个调整条拉到最左边,看看其中的变化。

  没错!发生变化的区域的确就是左边大约1/3的部分!这一区域的颜色才是真正意义上的"品红"!

#FF00FF(255,0,255)应该是紫色(Purple),把#FF00FF称为“品红”(“洋红/Magenta”)是一种误称相关推荐

  1. 谁说子网掩码的1必须连续?关于像255.255.0.255这样的非连续子网掩码

    百度上搜索的都是说255.255.0.255的掩码不合法,其实这些人没有读过RFC,也就大惊小怪了:RFC950的内容: A Class C Network Case (illustrating no ...

  2. 图像处理: 如何将 像素值 控制在 值域[0, 255]

    概念 在做计算机视觉方向项目的时候,往往需要进行图像处理.但是在此过程中,常常会遇到 对 像素值 进行 变换计算 后,像素值 超出 值域区间 [0, 255] 的情况.再加上计算过程中各自 float ...

  3. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for i

    keras  imshow显示图片显示不出来,报错 Clipping input data to the valid range for imshow with RGB data ([0..1] fo ...

  4. CSS之 background-color: rgba(255,0,0,opacity number)

    一: backgrounde-color:rgba( )  设置背景色的时候,可以调节背景色的透明度,注意是背景哦,所以不会存在遮罩问题.见图 #test .cover{ height: 100px; ...

  5. 灰度值取值范围_一幅灰度图像,用8bit量化,取值范围为[0,255],其中0表示(),255表示()。...

    一幅灰度图像,用8bit量化,取值范围为[0,255],其中0表示(),255表示(). 答: 纯黑色 纯白色 <董西厢>的内容中有一些是征引的<莺莺传>.() 答:√ 智慧职 ...

  6. 图像处理/255.0 和/127.5 -1

    在代码中看到图像的2种处理方式: img/255.0 img/127.5 - 1 第一种是对图像进行归一化,范围为[0, 1],第二种也是对图像进行归一化,范围为[-1, 1],这两种只是归一化范围不 ...

  7. 子网掩码255.255.0.0与255.255.255.0的区别

    先介绍子网掩码:子网掩码,是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.子网掩码不能单独存在,它必须结合IP地址一起使用.子网掩码只有一个作用,就是将某个I ...

  8. Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]解决方法

    Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] ❓报错原因 ...

  9. 【笔记】input data to the valid range for imshow with RGB data [0..1] for floats or [0.255] for integers

    Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for i ...

最新文章

  1. 如何参与贡献Dubbo社区
  2. JBoss 系列八十五: JBoss Modules 简单介绍
  3. /a.out , nohut ./a.out , nohup ./a.out 的区别
  4. 甲骨文重磅发布:客户现可将自治数据库部署在自己的数据中心
  5. python的pandas行数和索引_python – 使用索引值访问Pandas Data Frame行
  6. LINUX下载编译libtheora
  7. 文言文编程可以编译成PHP吗,阁下可知文言编程之精妙?CMU本科生开源文言文编程语言,数天2K星...
  8. 虚拟机装Win7 x64
  9. 什么是网点?印刷网点与CMYK色彩,彩色渐变色印刷原理。
  10. [模拟] aw3758. 距离零点的时刻(模拟+aw周赛007_1)
  11. 如何用电脑录制视频?图文教学,快速学会
  12. 中科院计算所是怎样的存在?院校详情大盘点!
  13. NeRF 神经辐射场
  14. 搭档之家|打造信息交互平台,推进合作新发展
  15. .NET软件授权管理解决方案Eziriz .NET IntelliLock控件详细介绍
  16. visio和preject冲突_我平时用Project和visio,WPS能代替嘛?
  17. 计算机网络基础以及进程查看管理
  18. 龙芯(Loongarch64),在Linux虚拟一个龙芯OS体验下
  19. java web 开发是做什么用的?
  20. tabindex的使用

热门文章

  1. 罗克韦尔自动化2018年自动化博览会开始接受注册
  2. ECMAScript 2016(ES7) 的新特性总结
  3. Mate 50,来了!
  4. 荣耀全家桶框架插件(关联P30pro、Mate20、荣耀20pro等)
  5. 山东大学计算机组成与设计实验七 节拍脉冲发生器时序电路
  6. 【Launcher开发】Android桌面布局分析
  7. 【Android】打包生成APK教程
  8. 讲解NRF24L01P无线收发模块(转载)
  9. linux命令:tar(打包、压缩、解压)
  10. Java知识点总结【6】抽象类和接口