将Uint8ClampedArray转换为普通数组

19

如何将Uint8ClampedArray(用于存储HTML5画布图像数据的数组)转换为常规数组,其中值不会被限制在0-255之间?


你不能这样做,至少如果你想保留图片的话是不行的。 - adeneo
抱歉,我的表述不够清晰。我需要将 Uint8ClampedArray 的数组数据复制到另一个数组中,这个数组应该是常规数组。然后,当我需要调整图像的亮度时,我可以操作常规数组的数据,并将该数据复制回 clamped 数组。否则,如果直接操作 clamped 数组,像素会被“烧毁”。 - cincplug
我认为这是不可行的,但我真的不知道。如果你不能将画布中的图像存储在常规数组中,因为它是二进制的,那么你也可能无法将该数据复制到常规数组中。 - adeneo
我找到的唯一方法是声明一个空数组,并将所有来自夹紧数组的数据推入其中。即使使用slice()也不行,因为在Uint数组上它得到的支持非常少。无论如何还是谢谢。 - cincplug
1个回答

30

你可以使用Array.prototype.slice方法将类型化数组转换为常规数组。

var typedArray = new Uint8ClampedArray([1, 2, 3, 4]);
var normalArray = Array.prototype.slice.call(typedArray);

如果您使用ES6,您可能可以使用Array.from代替:

var normalArray = Array.from(typedArray);

请参阅 MDN - JavaScript 类型化数组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接