【问题标题】:Saving a lot of canvas images to server将大量画布图像保存到服务器
【发布时间】:2014-01-06 08:51:38
【问题描述】:

我有一个从canvas.toDataURL() 生成大约 250 张图像的脚本。 我的问题是如何一次保存它们(向服务器发出一个请求)而不是单独发布它们。

我需要一种方法将它们打包到单个请求中,然后将它们发送到 PHP 服务器进行解包。

【问题讨论】:

  • 您可能编写的任何代码。请给我们看!

标签: javascript html html5-canvas


【解决方案1】:

canvas.toDataURL() 给出以 base64 编码的字节数据,它们可以安全地用作字符串并通过 HTTP 传递。

做一些类似的事情:

var images = [];
while(....) {
    images.push(canvas.toDataURL());
}
var imagesJson = JSON.stringify(images);
// pseudo code of jQuery ajax, you can make use of form and a hidden field 
// or any other way you'd like to query the server
$.ajax({
....
send:{images:imagesJson}
....
});

用PHP(其他服务器端语言应该差不多):

$images = json_decode($_POST['images'], true);
foreach($images as $image) {
    $image = base64_decode($image);
    file_put_contents('<path to file>', $image);
}

【讨论】:

  • 谢谢。这对我帮助很大。
  • @TwilightSun:说起来容易,配置和运行起来更难!在您的 PHP 示例中,除非图像大小约为 90x90px,否则提问者将遇到默认的 upload_max_filesize 和 post_max_size 限制,有 250 张照片。此外,它们可能会达到默认的 max_execution_time 限制。如果这些配置以及其他配置不正确,PHP 将静默(严重)失败。
  • @markE 然后,考虑到这些,我能想到的就是使用 Web 套接字而不是 POST,但是我更喜欢多个 POST 查询而不是 Web 套接字。
  • 一点也不……答案正朝着正确的方向发展。恕我直言,在向声誉
  • 大家好。我本来想问将图像上传到服务器的最佳方式是什么,但@markE 已经开始讨论了。图片大小为 320x240,有时脚本会给出 php 错误或错误 500。我想到了 nodejs 和 socket.io,但我认为这将是最好的选择,因为站点和 socket.io 服务器之间的集成将是很难。
猜你喜欢
  • 2019-12-16
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多