查看内存中的画布数据?

时间:2015-02-11 03:04:49

标签: javascript html5 debugging memory canvas

我有一个动态填充图像数据的画布标签数组,我需要分析画布的图像数据以进行调试。我怎么能在记忆中看到这些?

我显然可以将它们绘制到屏幕画布上,但这非常耗时,而且我正在寻找类似于在Chrome观看列表中查看变量的解决方案。

编辑:我需要直观地查看画布数据,而不是文本。我想要一种方法来做到这一点,而无需手动将内存画布的数据绘制到屏幕画布上以节省时间。例如,在Firefox的开发人员中,如果将鼠标悬停在图像源或CSS上以显示图像的URL,则会显示带有图像的小工具提示 Screenshot of firefox dev tools

我想要内存画布类似的东西

1 个答案:

答案 0 :(得分:0)

创建一个大型屏幕画布,并使用context.drawImage的缩放版本将多个缩小尺寸的内存画布绘制到屏幕画布上。您可以在大画布上一次查看4,6,8个较小的画布。有点像四屏安全摄像头显示。

[根据评论添加(以及澄清请求)]

我不知道怎样做你问的问题。

画布不是变量。它基本上是一个位图。

如果要查看像素数据,可以使用context.getImageData。您将看到的是数千个数组元素,其值均在0-255之间。

以下是图像像素数据的示例:

3,45,117,255,2,46,119,255,4,48,123,255,2,49,127,255,3,51,133,255,2,52,137,255,2,54,140,​​255,1,55,143,255,7,74,152,255,8,71,148,255,7,69,146,255,5,69,141,255 ,5,74,143,255,2,82,145,255,1,92,149,255,0,97,152,255,31,92,175,255,15,86,174,255,0,79,99,255,0,48,121,255,10,30,177,255,21,35,144,255,1,33,134,255,0,46,155,255 ,0,44,174,255,0,57,120,255,0,51,121,255,0,37,167,255,9,50,156,255,2,52,125,255,15,67,168,255,0,53,162,255,15,71,168,255,4,63,153,255,1,62,145,255,14,69,152,255,9 ,64,155,255,9,83,182,255,14,121,225,255,0,124,232,255,11,120,223,255,11,124,228,255,7,124,229,255,1,123,228,255,8,131,235,255,16,138,239,255,10,130,227,255,0,115,209,255,2,123,238,255,0,123,233,255,...以及更多数千个要素。

如果这是你需要的,这里是如何得到它:

var img=new Image();
img.onload=start;
img.src="yourImageSource";
function start(){

    canvas.width=img.width;
    canvas.height=img.height;
    ctx.drawImage(img,0,0);

    var a=ctx.getImageData(0,0,cw,ch).data;

    var t="";
    var comma="";
    for(var i=0;i<a.length;i++){
        t+=comma+a[i];
        comma=",";
    }
    console.log(t);
}

如果那不是您想要的,也许您可​​以编辑您的问题并更好地解释您的需求?