【发布时间】:2014-12-14 07:26:15
【问题描述】:
以这种方式使用 Lookup table 将颜色从 0.0 到 1.0 的线性空间转换为 0 到 255 的 sRGB 空间的好方法吗?
示例,在 Java 中:
byte[] table;
void initializeTable()
{
table = new byte[65536];
for(int i = 0; i < table.length; i++){
float Lin = i / (float) (table.length-1);
if(Lin<=0.0031308f)
table[i] = (byte)(255*(Lin*12.92f));
else
table[i] = (byte)(255*( (1+0.055f)*Math.pow(Lin,1/2.4f)-0.055f) );
}
}
int sRGB(float Linear/*in range 0..1*/) // Will return 0..255 integer sRGB
{
return 255 & table[(int)( Linear*(table.length-1) )];
}
【问题讨论】:
-
那么您是查找两个字节还是一个字节?
-
@2501 这不是重复的。链接的问题是请求线性到线性组件的转换。 sRGB 不是线性的。
-
我正在更新一点代码。 ↑↑↑ ↑↑↑