Python将sRGB值转换为RGB

1 投票
1 回答
71 浏览
提问于 2025-04-14 16:19

首先,我保证我已经看了很多关于这个问题的资料,包括这里的内容,但似乎没有什么能解决我的问题。我有三个值来表示一种颜色,都是在sRGB空间里的,现在我需要把它们转换成“普通”的RGB(也就是值从0到255之间的线性变化)。

我尝试了这段代码(在很多地方推荐过):

def srgb2lin(s):
   if s <= 0.0404482362771082:
        lin = s / 12.92
    else:
        lin = pow(((s + 0.055) / 1.055), 2.4)
    return lin

虽然转换后的值好一些,但它们仍然和我需要的值不一样(举个例子:输入0.4时返回的是33,而我需要的是59,至少在我手动输入RGB值到一个生成sRGB值的程序中时,看到的结果是这样的。如果这样说能让你明白的话)。

我知道转换并不是那么简单,但应该有一些地方能找到相关的代码吧?

1 个回答

1

抱歉,大家,我真是个傻瓜(为了辩解一下,我是个非常老的程序员——在Basic出现之前,我就已经在用COBOL了)。

在我的程序里,我不小心把绿色和蓝色搞混了——出于某种原因(虽然我知道是“RGB”),我把它写成了RBG。所以颜色肯定不对……但这不是我做错了什么(大家都知道,电脑只是按照我们说的去做。我让它出错了)。

我不知道这里有没有办法直接删除东西,但如果有的话(而且其他人能做到的话),请帮我删除。现在我程序里的所有“正常”颜色空间转换都能正常工作了。

撰写回答