【问题标题】:How to add new properties to HTML ImageData?如何向 HTML ImageData 添加新属性?
【发布时间】:2017-03-18 04:27:58
【问题描述】:

在我的一个应用程序中,我正在将画布上的图片作为 ImageData 读取。 示例代码是

<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

<script>

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var imgData = ctx.createImageData(100, 100);

var i;
for (i = 0; i < imgData.data.length; i += 4) {
    imgData.data[i+0] = 255;
    imgData.data[i+1] = 0;
    imgData.data[i+2] = 0;
    imgData.data[i+3] = 255;
}

ctx.putImageData(imgData, 10, 10);

</script>

<p><strong>Note:</strong> The canvas tag is not supported in Internet
Explorer 8 and earlier versions.</p>

</body>
</html>

我将相同的 ImageData 传递给各种其他 API,而这些其他 API 需要每个 ImageData 的唯一 ID 来区分。所以,我只是简单地修改了代码,如下所示:

<!DOCTYPE html>
<html>
<body>

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

<script>

var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var imgData = ctx.createImageData(100, 100);

var i;
for (i = 0; i < imgData.data.length; i += 4) {
    imgData.data[i+0] = 255;
    imgData.data[i+1] = 0;
    imgData.data[i+2] = 0;
    imgData.data[i+3] = 255;
}

ctx.putImageData(imgData, 10, 10);
imgData.id = 21323;
alert("imgData.id --"+imgData.id);
imgData.picType = "Rect";
alert("imgData.picType --"+imgData.picType);
</script>

<p><strong>Note:</strong> The canvas tag is not supported in Internet
Explorer 8 and earlier versions.</p>

</body>
</html>

我很想知道它是如何工作的 - 向 ImageData 添加一些属性?

【问题讨论】:

    标签: javascript html html5-canvas html2canvas getimagedata


    【解决方案1】:

    就像 javascript ImageData 中的其他所有内容一样,它也是一个对象,您可能知道在 JS 中为对象添加新属性是 obj1.prop1 = val1 的问题

    现在您可能会问,为什么向您的 ImageData 添加一些随机值不会破坏您的图像?答案很简单:图像的字节表示以Uint8ClampedArray 的形式存储在 ImageData 的data 属性中。

    imageData 的控制台转储

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 2020-05-16
      • 2021-10-18
      • 1970-01-01
      相关资源
      最近更新 更多