`createImageData()`和`new ImageData()`有什么不同?

时间:2016-05-14 22:21:47

标签: javascript canvas html5-canvas

我注意到两个JavaScript API成员看起来非常相似:

我应该如何正确选择使用哪一个?或者它们本质上是可以互换的吗?

一眼就看出,ImageData构造函数被标记为“这是一项实验性技术/因为该技术的规范尚未稳定......”。

1 个答案:

答案 0 :(得分:1)

如果两个API都可以完成您想要的任务,您可以使用其中任何一个。如果API具有相关功能或限制,则需要根据这些事实做出决定。

CanvasRenderingContext2D.createImageData()的功能:

  • 旧的稳定API函数,所有浏览器和版本都支持。
  • 需要现有的2D上下文对象才能创建ImageData对象。
  • 可以使用createImageData(imagedata)形式克隆ImageData对象。

new ImageData()的功能:

  • 被认为是实验性的API函数。任何版本的Microsoft Internet Explorer都不支持!
  • 在工作线程中创建ImageData时是首选。 (ctx.createImageData()是否被视为线程不安全?)
  • 是一个独立构造函数,不需要首先使用2D上下文对象。
  • 可以使用new ImageData(array, width, height)形式基于像素阵列构建ImageData