【问题标题】:PNG RGB transformation related to alpha in getImageData?与getImageData中的alpha相关的PNG RGB转换?
【发布时间】:2012-01-13 08:35:48
【问题描述】:

我有一个 PNG 图像,其中一些像素的 alpha 为 254。这些像素具有这种颜色: RGBA{183, 221, 129, 254}(不是 javascript 表示法)。

我可以在 Gimp 中检查 R、G 和 B 分量是 183、221 和 129。

但是当我在 Chrome 中使用 getImageData(在画布上)读取像素时,R、G 和 B 值被修改为 182、220 和 128(A 正确为 254)。

这是标准化的转换还是错误?如果这很正常,我在哪里可以找到从 PNG 中的值预测 getImageData 给出的 RGB 值的确切公式?

【问题讨论】:

    标签: javascript png rgb html5-canvas


    【解决方案1】:

    这几乎肯定是由gamma correction 引起的。简而言之,大多数网络浏览器会忽略图像中包含的颜色空间并使用默认颜色空间(因为它不可能让所有东西都使用颜色空间而不会造成很大的性能损失,尤其是 Flash 等插件)。

    如果您不关心真正旧的浏览器(尤其是 Opera 6 和 Safari 1),您可以只保存图像而无需任何伽马信息。

    【讨论】:

    • 这是一篇有趣的文章,但删除 gamma 信息并不能阻止 Chrome 更改数据。
    • 我必须明确指出,我的问题不会出现在完全不透明的像素上,只有 alpha=254 的像素才会出现。
    • @dystroy 它仍然可能是某种颜色调整。你能做一个展示问题的小提琴吗?
    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 2014-02-02
    • 1970-01-01
    • 2019-09-05
    • 2013-02-18
    • 2012-01-14
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多