Uint8Array和Uint8ClampedArray之间的区别

Luk*_*uka 60 javascript arrays memory-management clamp

Uint8Array和Uint8ClampedArrayJavaScript有什么区别?据我所知,Uint8ClampedArray它与画布一起用于像素操作.为什么这样做有什么好处?

Fel*_*ing 80

查看Uint8ClampedArray和Uint8Array的示例,看起来不同的是分配时如何处理值.

如果您尝试将一个元素设置为一个限制数组到该范围之外的任何值0-255,它将默认为0或255(取决于该值是小于还是大).普通Uint8Array数组只占用该值的前8位.

例子:

var x = new Uint8ClampedArray([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 0
console.log(x.length); // 2

var x = new Uint8Array([17, -45.3]);
console.log(x[0]); // 17
console.log(x[1]); // 211
console.log(x.length); // 2
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,`Uint8Array([0.9])`是`[0]`,但`Uint8ClampedArray([0.9])`是`[1]`,即.夹紧版本使用圆角,但基本版本使用地板. (15认同)
  • @llya 这些用于图像/视频/音频处理。主要特点是:它永远不会上溢/下溢。当您尝试增加图像的亮度时:最大亮度 (255)+1 应为 255,而不是溢出为零。 (7认同)