【问题标题】:Convert Uint8ClampedArray to regular array将 Uint8ClampedArray 转换为常规数组
【发布时间】:2015-07-03 02:05:47
【问题描述】:

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

【问题讨论】:

  • 你不能,至少如果你打算保留图片的话不能?
  • 对不起,我不够清楚。我需要将 Uint8ClampedArray 的数组数据复制到另一个数组中,这将是常规数组。然后,例如,当我需要调整图像的亮度时,我可以操作常规数组的数据并将该数据复制回钳位数组。否则,如果我直接操作钳位数组,我会“烧毁”像素。
  • 我不认为这是可行的,但我真的不知道。如果您无法将画布中的图像存储在常规数组中,因为它是二进制的,那么您可能也无法将该数据复制到常规数组中。
  • 嗯,我发现的唯一方法是简单地声明一个空数组并将所有数据从钳位数组推入其中。即使 slice() 也不起作用,因为 Uint 数组的跨浏览器支持很少。还是谢谢。

标签: javascript arrays typed-arrays uint


【解决方案1】:

您可以使用 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 typed arrays

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2016-02-08
    • 1970-01-01
    相关资源
    最近更新 更多