【问题标题】:how can convert image cmyk to rgb mode in javascript如何在javascript中将图像cmyk转换为rgb模式
【发布时间】:2016-06-05 12:11:02
【问题描述】:

我有一个问题:

浏览器不支持以 CMYK 模式显示图像,客户在上传的图像中看到一些非常鲜明和不同的颜色,而颜色还可以。

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

根据我关于使用 JavaScript 将 CMYK 模式下的图像转换为 RGB 模式的搜索结果,需要将图像导入到画布中,并使每个像素中的每个颜色编号都使用此库 ColorConverter 将 CMYK 转换为 RGB 颜色编号最后我有了一个 RGB 模式的画布

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

【问题讨论】:

  • 如果您需要它在客户端完成,那是最好的方法,尽管我会质疑为什么不在服务器上只进行一次转换?

标签: javascript image canvas rgb cmyk


【解决方案1】:

浏览器不支持以 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 通道设置为完全不透明。

【讨论】:

  • K3N 对于如何使用配置文件(例如 ISO Coated v2 300%)将 CMYK 转换为 RGB,您有什么建议吗?我只想一次转换一种颜色(不是图像),所以我可以负担得起一些昂贵的操作。任何帮助将不胜感激!
  • @sambecker 不使用 ICC/LUT。不过,您可以尝试使用此特定配置文件(一种选择是使用近似曲线配置文件,小尺寸但更多计算)预先计算原始 3D LUT(ICC 在技术上也是 LUT,但是)。该文件可能会变得相当大,具体取决于您要插入的位置,并且由于大量可能的组合,总会有少量开销。没有简单的方法:/ 我认为在浏览器中用于颜色空间管理的 API 正在进行中,但如果我们看到它可能需要一段时间。
  • 你能给我指出正确的 ICC/LUT 方向吗?如果有帮助,我可以在后端处理转换。我很想知道这些人在做什么:codecrete.net/CMYK。他们似乎在服务器上进行计算,使用配置文件,然后向浏览器发送 AJAX 响应。
  • 您的回复是否也适用于这篇文章? stackoverflow.com/questions/44730949/…
猜你喜欢
  • 2020-07-03
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
相关资源
最近更新 更多