Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 将HTML 5 camvas图像保存到服务器_Javascript_Html - Fatal编程技术网

Javascript 将HTML 5 camvas图像保存到服务器

Javascript 将HTML 5 camvas图像保存到服务器,javascript,html,Javascript,Html,我需要将id为='area'的画布数据作为图像保存到我的服务器的文件夹中/使用javascript上传 我试图用window.open(canvas.toDataURL(“image/png”))在浏览器中显示图像;但浏览器显示空白屏幕您可以使用toDataURL() 注意:toDataURL()方法要求绘制到画布上的任何图像都托管在web服务器上,该服务器的域与执行它的代码的域相同。如果不满足此条件,将引发安全错误异常 比如说 <body> <canvas id="

我需要将id为='area'的画布数据作为图像保存到我的服务器的文件夹中/使用javascript上传


我试图用window.open(canvas.toDataURL(“image/png”))在浏览器中显示图像;但浏览器显示空白屏幕

您可以使用
toDataURL()

注意:toDataURL()方法要求绘制到画布上的任何图像都托管在web服务器上,该服务器的域与执行它的代码的域相同。如果不满足此条件,将引发安全错误异常

比如说

 <body>
    <canvas id="myCanvas" width="578" height="200" style="display:none;"></canvas>
    <img id="canvasImg" style="border:1px solid #9C9898;" alt="Right click to save me!">
    <script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');

      // draw cloud
      context.beginPath();
      context.moveTo(170, 80);
      context.bezierCurveTo(130, 100, 130, 150, 230, 150);
      context.bezierCurveTo(250, 180, 320, 180, 340, 150);
      context.bezierCurveTo(420, 150, 420, 120, 390, 100);
      context.bezierCurveTo(430, 40, 370, 30, 340, 50);
      context.bezierCurveTo(320, 5, 250, 20, 250, 50);
      context.bezierCurveTo(200, 5, 150, 20, 170, 80);
      context.closePath();
      context.lineWidth = 5;
      context.fillStyle = '#8ED6FF';
      context.fill();
      context.strokeStyle = '#0000ff';
      context.stroke();

      // save canvas image as data url (png format by default)
      var dataURL = canvas.toDataURL();

      // set canvasImg image src to dataURL
      // so it can be saved as an image
      document.getElementById('canvasImg').src = dataURL;

    </script>
  </body>

我在早期的项目中解决了这个问题

关于用户/服务器之间的安全性,这种方法绕过了它,因为我在这里的另一个答案中提到了可能的问题

这可能是一种笨拙的方法,但至少它是有效的,而且不允许im发布基于某个合法内容的代码

在客户端:

您可以做的是让用户单击一个按钮来激活异步回发,然后在回发运行之前,将画布内容转换为您选择的格式的图像,然后将其转换为base64字符串,并将其放置到隐藏的文本框中,并将文本框的内容发送到服务器,就像普通用户一样登记表

在服务器上:


将新获取的base64字符串转换回与您在客户端创建的格式相同的图片,然后保存。

不够清晰。请不要在没有明确说明您采取了哪些步骤来解决问题以及您遇到了哪些问题的具体细节的情况下提问。我们不是来帮你解决问题的。试试permadi.com/blog/2010/10/html5-saving-canvas-image-data-using-php-and-ajax/