Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将html5画布图像转换为json对象?_Javascript_Html_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 如何将html5画布图像转换为json对象?

Javascript 如何将html5画布图像转换为json对象?,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,您好,我必须将一组图像转换为json对象。但是,作为第一步,我尝试对单个图像进行转换,但我不知道json对象是否已创建。请帮助我检查对象是否已创建。 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=utf-8 /> <title>HTML5 Example: Canvas</title> <script> fu

您好,我必须将一组图像转换为json对象。但是,作为第一步,我尝试对单个图像进行转换,但我不知道json对象是否已创建。请帮助我检查对象是否已创建。 代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset=utf-8 />
    <title>HTML5 Example: Canvas</title>
<script>
      function drawOnCanvas() {
        var ctx=document.getElementById("mycanvas").getContext('2d');
        var image=new Image();
        image.src="2000.png";
        image.onload=function() {
          ctx.drawImage(image,140,0);
        }
    imageData = ctx.getImageData(0, 0, mycanvas.width, mycanvas.height);
    var jsontext=JSON.stringify(imageData.data);
      }
      window.addEventListener('load', drawOnCanvas, true);
    </script>

  </head>
  <body>
    <canvas width="1000" height="1000" id="mycanvas"></canvas>
  </body>
</html>

HTML5示例:画布
函数drawOnCanvas(){
var ctx=document.getElementById(“mycanvas”).getContext(“2d”);
var image=新图像();
image.src=“2000.png”;
image.onload=function(){
ctx.drawImage(图像,140,0);
}
imageData=ctx.getImageData(0,0,mycanvas.width,mycanvas.height);
var jsontext=JSON.stringify(imageData.data);
}
window.addEventListener('load',drawOnCanvas,true);

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
ctx.beginPath();
ctx.rect(5,5300250);
ctx.stroke();
ctx.arc(150150100,0,Math.PI,false);
ctx.stroke();
canvas.addEventListener(“单击”,函数(){
var data=ctx.getImageData(0,0,canvas.width,canvas.height);
控制台日志(数据);
log(JSON.stringify(data));
var c2=document.getElementById(“c2”);
var ctx2=c2.getContext(“2d”);
ctx2.putImageData(数据,0,0);
},假);
演示:

getImageData()将返回一个对象
stringify(数据)将为您生成JSON字符串(请参见控制台)

。。。你为什么要提到JSON?这是一个有效的问题。我们如何从
画布ImageData
中获取字符串?感谢您的回复,但我没有获得第二张图像,我不知道您为什么单击第一张图像。事件侦听器将在第一个画布中获取数据,并将其呈现给第二个CanvasHanks这是一个不错的解决方案,但它会生成真正的大JSON,在我的例子中,对于一个640x480px大小的画布,它会生成13mb的JSON,只有一个红色圆圈。因此,对于这里的一些人来说,可以选择将图形的参数手动保存在JSON中,然后在另一个客户端上发送并重新绘制。
<canvas id="canvas" width="400" height="400">
</canvas>
<canvas id="c2" width="400" height="400"></canvas>

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.rect(5, 5, 300, 250);
ctx.stroke();
ctx.arc(150, 150, 100, 0, Math.PI, false);
ctx.stroke();

canvas.addEventListener("click", function (){
  var data = ctx.getImageData(0, 0, canvas.width, canvas.height);

    console.log(data);
    console.log(JSON.stringify(data));

  var c2 = document.getElementById("c2");
   var ctx2 = c2.getContext("2d");
    ctx2.putImageData(data, 0, 0);
}, false);