PSD.js 字体颜色代码毫无意义
PSD.js Font Colour Codes Make No Sense
我知道这个问题已经被问过 但没有任何有意义的答案,开发人员很难找到。
使用 PSD.js 文本字符的颜色与 RGB、RGBA 或 CMYK 不匹配,a 颜色数组中有 5 个数字,它们甚至与 Photoshop 文件中的文本颜色不匹配,如果您尝试将任何数字与 RBG 或 CMYK 值进行比较。
PSD.js 显示文本特定部分颜色的示例显示了这个数组:
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
你可以清楚地看到这些与我之前看到的任何颜色代码都没有关系。这些数字应该代表这种颜色:#db6971 - 但是 none 的数字匹配任何东西,RGB 是 219,105,113,CMYK 是 11%,72%,46%,0%
那么有人知道这里发生了什么吗?我正在尝试将此文本呈现为 html,但我无法在不知道这些数字的含义的情况下设置颜色。
如 PSD.js 回购官方 GitHub 页面上的 post 所述 - 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]]
如果您将 CMYK 百分比乘以 255(一个字节的最大值),您将非常接近您在数组中看到的值 (28, 184, 117, 0)。最后一个值可能是 alpha(透明度)分量,255 表示全部不透明。所以,我会说这是 CMYK+A
给定你的数组:
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
如果您需要以百分比表示的 CMYK 值,这只是您需要求解的方程式。
即。对于以百分比表示的 C 值,它是
255 * C / 100 = 27
这给你
C = 27 * 100 / 255 = 10.58 (~= 11%)
M = 185 * 100 / 255 = 72.54 (~= 73%)
等等
Y ~= 45%, K = 0%, A = 100%
这与您预期的 CMYK(11%、72%、46%、0%)非常接近。
现在,如果您想要 RGB 中的值,CMYK 到 RGB 的转换最好使用 ICC 配置文件(从一个特定的输入 CMYK 输入配置文件到特定的 RGB 输出,如 sRGB)。
您也可以使用您在网上找到的 simplified algorithms 之一。它会起作用,只是不要指望它看起来像 Photoshop 完成的转换。
我知道这个问题已经被问过
使用 PSD.js 文本字符的颜色与 RGB、RGBA 或 CMYK 不匹配,a 颜色数组中有 5 个数字,它们甚至与 Photoshop 文件中的文本颜色不匹配,如果您尝试将任何数字与 RBG 或 CMYK 值进行比较。
PSD.js 显示文本特定部分颜色的示例显示了这个数组:
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
你可以清楚地看到这些与我之前看到的任何颜色代码都没有关系。这些数字应该代表这种颜色:#db6971 - 但是 none 的数字匹配任何东西,RGB 是 219,105,113,CMYK 是 11%,72%,46%,0%
那么有人知道这里发生了什么吗?我正在尝试将此文本呈现为 html,但我无法在不知道这些数字的含义的情况下设置颜色。
如 PSD.js 回购官方 GitHub 页面上的 post 所述 - 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]]
如果您将 CMYK 百分比乘以 255(一个字节的最大值),您将非常接近您在数组中看到的值 (28, 184, 117, 0)。最后一个值可能是 alpha(透明度)分量,255 表示全部不透明。所以,我会说这是 CMYK+A
给定你的数组:
[3] => Array
(
[0] => 27
[1] => 185
[2] => 116
[3] => 0
[4] => 255
)
如果您需要以百分比表示的 CMYK 值,这只是您需要求解的方程式。
即。对于以百分比表示的 C 值,它是
255 * C / 100 = 27
这给你
C = 27 * 100 / 255 = 10.58 (~= 11%)
M = 185 * 100 / 255 = 72.54 (~= 73%)
等等
Y ~= 45%, K = 0%, A = 100%
这与您预期的 CMYK(11%、72%、46%、0%)非常接近。
现在,如果您想要 RGB 中的值,CMYK 到 RGB 的转换最好使用 ICC 配置文件(从一个特定的输入 CMYK 输入配置文件到特定的 RGB 输出,如 sRGB)。
您也可以使用您在网上找到的 simplified algorithms 之一。它会起作用,只是不要指望它看起来像 Photoshop 完成的转换。