我知道这个问题已经被问到here了,但是没有任何答案是有道理的,开发人员是一个噩梦。
使用PSD.js文本字符的颜色与RGB,RGBA或CMYK不匹配,颜色数组中有5个数字,如果您尝试比较,它们甚至不匹配Photoshop文件中的文本颜色RBG或CMYK值的任何数字。
PSD.js显示文本特定部分颜色的示例显示了这个数组:
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
您可以清楚地看到这些与我之前看到的任何颜色代码无关。这些数字应该代表这种颜色:#db6971 - 但没有数字匹配任何东西,RGB为219,105,113,CMYK为11%,72%,46%,0%
那么有谁知道这里发生了什么?我试图将此文本呈现为html但我无法在不知道这些数字应该是什么意思的情况下设置颜色。
答案 0 :(得分:1)
正如PSD.js repo官方GitHub页面上的帖子所解释的那样 - https://github.com/meltingice/psd.js/issues/119#issuecomment-346899211
...转换数组你可以做这样的事情。
const colorArray = [ [ 102, 0, 255, 0, 255 ], [ 102, 0, 255, 0, 255 ]]
const RGB = colorArray.map(([r,g,b]) => [r,g,b]) //[[102,0,255],[102,0,255]]
答案 1 :(得分:0)
如果将CMYK百分比乘以255(一个字节的最大值),则会非常接近您在数组中看到的值(28,184,117,0)。最后一个值可能是alpha(透明度)组件,255表示所有不透明。所以,我说这是CMYK + A
鉴于你的数组:
nub
如果您需要百分比的CMYK值,它只是您需要解决的等式。
IE中。对于C值百分比,它是
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
给你
255 * C / 100 = 27
等
C = 27 * 100 / 255 = 10.58 (~= 11%)
M = 185 * 100 / 255 = 72.54 (~= 73%)
这与你期望的CMYK(11%,72%,46%,0%)非常接近。
现在,如果您想要RGB中的值,CMYK到RGB的转换最好使用ICC配置文件(从一个特定的输入CMYK输入配置文件到特定的RGB输出,如sRGB)。
您还可以使用在网络上找到的simplified algorithms之一。它可以工作,只是不要期望它看起来像Photoshop完成的转换。