getstr88 发表于 2022-6-7 22:20

win系统的“色调 饱和度 亮度”这算是什么颜色表示方式啊? 另外,.NET C#官方库没...

问题1:
win系统的“色调 饱和度 亮度”这算是什么颜色表示方式啊? 除了RGB之外,常用的有CMYK,HSB,HSV,但看了它们资料和数值,windows的这个显然不是


所以,它究竟是什么表达方式?怎么和RGB换算啊?



问题2:
.NET C#官方库好像竟然没有除了用Color表示RGB以外的其他表达方式的类(CMYK,HSB,HSV)??
官方扩展库有没有呢?


网上能找到网友写的,有文章转载来转载去的,但几种不同版本,写的还不一样,算的还能不一样(不是精度问题,误差不是1以内,有的一看就是写错了误人子弟来的)

sanant 发表于 2022-6-7 22:33

这个应该是和如lightroom等调色软件中的表达意思一致吧。调何种颜色,调鲜艳程度,调明亮程度。

会飞的乌鸦 发表于 2022-6-7 23:16

hsb和hsv是一种东西,不同的表达方法,h是色相(色调),s是饱和度,b或者v是明度(亮度),所以你用红色圆圈圈出来的是hsb(hsv)的表达方式。
右边的红绿蓝是rgb的表达方式,rgb三色叠加是白色,如果你看到rgba这样的,最后的a是透明度。
cmyk是用于印刷的颜色表达方式,c是青色,m是品红色,y是黄色,k是黑色。cmy三色叠加是黑色。

wu_yang007 发表于 2022-6-7 23:28

就是 hsb   PS 了解的

getstr88 发表于 2022-6-8 07:02

会飞的乌鸦 发表于 2022-6-7 23:16
hsb和hsv是一种东西,不同的表达方法,h是色相(色调),s是饱和度,b或者v是明度(亮度),所以你用红色圆 ...

RGB、cmyk含义我知道。

hsb和hsv是一种东西。我在网上没有找到这种说法,而且最重要的是,找不到windows那色调 饱和度 亮度的 3个值怎么计算的

getstr88 发表于 2022-6-8 07:03

wu_yang007 发表于 2022-6-7 23:28
就是 hsb   PS 了解的

要的公式哦

getstr88 发表于 2022-6-8 07:13

会飞的乌鸦 发表于 2022-6-7 23:16
hsb和hsv是一种东西,不同的表达方法,h是色相(色调),s是饱和度,b或者v是明度(亮度),所以你用红色圆 ...

如果如你所说,是一个东西

我图中例子,按照https://blog.51cto.com/u_12139363/3028601 的计算。得到的3个值,和win颜色选择器得到的没有一个一样,差别大得很。
就算把那2个百分比乘以255,得到的也和win颜色选择器完全不一样

getstr88 发表于 2022-6-8 07:16

wu_yang007 发表于 2022-6-7 23:28
就是 hsb   PS 了解的

如果如你所说,是一个东西

我图中例子,按照https://blog.51cto.com/u_12139363/3028601 的计算。得到的3个值,和win颜色选择器得到的没有一个一样,差别大得很。
就算把那2个百分比乘以255,得到的也和win颜色选择器完全不一样

pzx521521 发表于 2022-6-8 10:18

https://i0.hdslb.com/bfs/article/311782daf136cc65391736591c259d56bb65cdc0.png@896w_645h_progressive.webp
和ps 对比一下转换值就好了

huye 发表于 2022-6-8 10:32


1.1.第一个问题win不是回答了吗?是HSL。
https://zhuanlan.zhihu.com/p/151863284 这是我找到的公式资料,具体对错需要你自己去啃了,我看得头大。最精髓的一句话——“RGB和HSB之间转换公式的本质是坐标系的转换,即由RGB的笛卡尔坐标系转换为圆柱体坐标系”。以我理解,RGB与HSL并不是一一对应的,因为RGB有255×255×255=16581375种颜色,而HSL取整只有100×100×360=3600000种颜色,差了一个数量级,所以必然存在一个RGB数值对应多个HSL数值的情况。如果想提高RGB转HSL的精确度,就必须要把HSL取浮点数,然而这样做的话,HSL反过来转RGB也会遇到同样的问题。所以微软的解决方法是,强行把HSL用笛卡尔坐标系(255,255,255)有损表示,即HSL在RGB色彩空间的投影。所以如果你想RGB转HSL,需要额外去把各个值乘以0.71或2.55的系数。

1.2.然而奇葩的地方来了,你用的颜色选择器我在office套件里没找到,是在画图工具找到的,取值范围居然是(239,240,240),以RGB(218,112,214)为例,画图工具的ESL是(202,141,155),转为excel中的ESL是(215,149,165),你说的误差来源应该就是来自以上这两个原因。。。

2.无论是hsb、hsl、hsv乃至cmyk,都是rgb的子集,作为官方库,不支持也在情理之中。
页: [1] 2
查看完整版本: win系统的“色调 饱和度 亮度”这算是什么颜色表示方式啊? 另外,.NET C#官方库没...