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

Cross-browser spec for canvas pixel data?

本文关键字:浏览器 数据 布像素 像素      更新时间:2023-09-26

有没有人知道目前的画布像素数据规范在各种浏览器中有多远?如果"没有那么远",那么之前的规范是什么?

当你调用或推送像素时,你得到/send:

ImageData
  data:   Uint8ClampedArray
  width:  Number
  height: Number

但我知道它曾经只是:

{
  data:   Array
  width:  Number
  height: Number
}

如果我生成 ImageData,我如何检测我需要生成什么?ImageData && Uint8ClampedArray是充分的吗?那么I 会立即回落到Object / Array,还是别的什么?不是有个像素阵列吗?

[edit] caniuse说IE10和Opera Mini不支持uint8clampearray,所以…div ?

调用ctx.getImageData()时,规范要求UserAgent返回typearray而不指定类型。对typearray的支持始于IE10。但是,像IE9一样,ImageData对象的data属性是CanvasPixelArray,它没有可用的Constructor方法。

但无论如何,最好的和IMK唯一跨浏览器的方式来获得ImageData对象所需的正确的ArrayBuffer,是调用ctx.createImageData(width,height)

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