画布像素数据的跨浏览器规范?

时间:2015-08-27 12:19:34

标签: javascript canvas typed-arrays

有没有人碰巧知道当前画布像素数据规范在各种浏览器中有多远?如果“不那么远”,以前的规格是什么?

当您致电或推送像素时,您会收到/发送:

ImageData
  data:   Uint8ClampedArray
  width:  Number
  height: Number

但我知道它过去只是:

{
  data:   Array
  width:  Number
  height: Number
}

因此,如果我生成 ImageData,我该如何检测我需要生成什么? ImageData && Uint8ClampedArray是否足够?我立即回到Object / Array还是别的什么?在某些时候是不是有像素阵列?

[编辑] caniuse说IE10和Opera Mini不支持Uint8ClampedArray,所以......?

1 个答案:

答案 0 :(得分:2)

调用ctx.getImageData()时,the specs要求UserAgent返回TypedArray而不指定哪种类型。 TypedArray的The support以IE10开头。但是,就像在IE9中一样,ImageData对象的数据属性是CanvasPixelArray,它没有可用的构造方法。

但无论如何,最好和 IMK 只能跨浏览器来获取ImageData对象所需的正确ArrayBuffer,就是调用ctx.createImageData(width,height)

然后你可以得到它的data数组,你确定它的类型是正确的。