我遇到了问题:
浏览器不支持以CMYK模式显示图像,并且客户端在上传的图像中看到一些非常清晰且不同的颜色,而颜色正常。
解决这个问题我认为使用JavaScript语言将CMYK图像转换为客户端的RGB模式图像是一个好主意。
根据我的搜索结果,使用JavaScript将CMYK中的图像转换为RGB模式,将所需图像导入画布,并使每个像素中的每个颜色编号使用此库{{3}将CMYK转换为RGB颜色编号最后我有一个RGB模式的画布
这就是我的想法,现在我的问题是这个解决方案是否合适?如果有更好的方法来完成这项工作?请把你的想法告诉我。
答案 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通道设置为完全不透明。