如何在javascript中将图像cmyk转换为rgb模式

时间:2016-06-05 12:11:02

标签: javascript image canvas rgb cmyk

我遇到了问题:

浏览器不支持以CMYK模式显示图像,并且客户端在上传的图像中看到一些非常清晰且不同的颜色,而颜色正常。

解决这个问题我认为使用JavaScript语言将CMYK图像转换为客户端的RGB模式图像是一个好主意。

根据我的搜索结果,使用JavaScript将CMYK中的图像转换为RGB模式,将所需图像导入画布,并使每个像素中的每个颜色编号使用此库{{3}将CMYK转换为RGB颜色编号最后我有一个RGB模式的画布

这就是我的想法,现在我的问题是这个解决方案是否合适?如果有更好的方法来完成这项工作?请把你的想法告诉我。

1 个答案:

答案 0 :(得分:2)

  

浏览器不支持以CMYK模式显示图像

无法正确显示CMYK图像,因为它与输出设备相关,并且转换为模拟预览需要本地校准且准确的ICC配置文件(或者如果不需要精度,则至少需要高质量的近似配置文件)

可以简单地将每个CMYK像素转换为RGB,但是,由于RGB比CMYK具有wider gamut,因此最终可能会得到非常明亮的结果。

在我看来,更好的方法是在使用ImageMagick或可以考虑ICC配置文件的类似软件上传时在服务器端实施转换设置。这将允许您保留原始CMYK文件以供下载/打印以及转换和近似RGB版本以供预览(您可以f.ex.允许客户端上传其输出ICC以进行准确预览)。

在任何情况下,将CMYK数据直接转换为RGB的公式为:

var C, M, Y, K;   // initialize with normalized values

然后

var r = 255 * (1 - C) * (1 - K);
var g = 255 * (1 - M) * (1 - K);
var b = 255 * (1 - Y) * (1 - K);

Alpha通道设置为完全不透明。

相关问题