2016-11-04 56 views
1

在我的一个应用程序中,我正在读取画面上的图片作为ImageData。 示例代码如何向HTML 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需要独特的ID为每个的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); 
 
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的?

回答

0

就像一切在JavaScript ImageData否则太是一个对象,正如你可能知道加入新的特性,以在JS对象是obj1.prop1 = VAL1

现在的问题你可能会问为什么加入一些随机值你的ImageData没有破坏你的形象?答案很简单:图像的字节表示作为Uint8ClampedArray存储在ImageData的data属性中。为imageData的

控制台转储

Console dump of imageData