我认为putImageData比drawImage更快,但我需要证明它。
我猜这与Flash及其Bitmap和BitmapData类的情况相同。基本上,BitmapData有助于对Bitmap对象中的数据进行非可视化提取,从而可以非常方便快速地对其进行操作。
我猜测在高性能的情况下,例如游戏,从每个图像中提取ImageData(例如,每个精灵)并将其缓存在“资产”字典中是比将精灵自身绘制到更好的解决方案画布一遍又一遍。
有人可以证明这一点吗?
答案 0 :(得分:8)
我不赞成将此测试放在一起,但您可以清楚地看到使用drawImage()
同时使用画布和图像以及此处putImageData()
的效果的表现:
http://jsperf.com/canvas-drawimage-vs-putimagedata/3
截至目前,drawImage()
比putImageData()
快得多。最后我听说,这不是故意的,浏览器开发人员正在考虑改善性能差距。
答案 1 :(得分:0)
对于较大的画布,我发现它并没有产生太大的差别,但是putImageData绝对不像复制画布的drawImage那样高效。
以下是我使用的一些测试用例: http://jsperf.com/canvas-size-test-case/3
我最终在整体源画布大小方面遇到了一些性能问题,无论我实际复制的数据大小如何。