JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – HTML5 Canvas绘制的颜色与提供的颜色不同大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
将某种颜色设置为画布的fillStyle并使用fillRect绘制一个矩形后,矩形的颜色有时会与提供的颜色略有不同(get ImageData返回不同的值 – 通常其中一个值低1).它似乎只发生在使用rgba颜色时(而不是rgb),但实际上我确实需要使用alpha通道.

对于想要研究这个问题的人,我为js小提琴制作了一个简单的测试套件:
http://jsfiddle.net/LaPdP/1/

关于为什么会发生这种情况的任何想法,以及是否有任何方法可以解决这个问题?如果它至少总是发生在相同的值上,那么我只是通过将它增加1来绕过它,但对我来说它似乎很随机.

解决方法

2017年更新:我完全忘记了这个答案,但原因与获取/设置时预先倍增数据有关.由于位图中的数字总是整数,因此预乘会的自然结果通常会导致非整数,因此会出现舍入误差.

遗憾的是,没有方便的方法来解决这个问题.

只是为了澄清下面的伽玛:GAMMa(通过伽玛设置或ICC配置文件)将直接影响图像,但对于直接绘制到画布的形状,这不应该是一个问题本身,因为只有显示器伽玛在顶部调整,不是数据本身.

老答案:

您遇到的可能是仅在画布标准中部分实现颜色和伽马校正部分的结果.

各种颜色值的原因,至少在涉及包含ICC配置文件的图像时,是由于浏览器中的内置颜色和伽马校正:

资料来源:w3.org

但是,它也在第4.8.11.1节中说明:

由于写入的状态是正在进行的工作,我的猜测是浏览器具有颜色和伽马校正的“懒惰”实现,其当前也影响形状 – 或者 – 来自画布的所有颜色信息被校正为显示简档作为第一个引用的后一点.在标准成为最终标准之前,这可能不会改变.

大佬总结

以上是大佬教程为你收集整理的javascript – HTML5 Canvas绘制的颜色与提供的颜色不同全部内容,希望文章能够帮你解决javascript – HTML5 Canvas绘制的颜色与提供的颜色不同所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。