javascript - 编辑后将大 Canvas 保存为数据 URI

标签 javascript html canvas

我已从服务器加载了一个 47MB 的图像文件,并将其渲染在 Canvas 上进行编辑。

编辑后,当我尝试获取图像的数据 URI 时,浏览器卡住,然后询问是否应停止脚本。

我目前正在使用此代码来获取数据 URI:

drawingCanvas.toDataURL("image/png");

获取 JPEG 数据 URI 的速度要快一些,但我只需要文件为 PNG 格式。有什么办法可以让它更快吗?

最佳答案

此文件太大,无法通过数据 URI 进行处理。不同浏览器有限制,参见Data protocol URL size limitations

您可以尝试将base64编码的数据发布到您的服务器,对其进行解码并获得普通图像。用 PHP 提供的简化解决方案,但环境并不重要。

list($type, $data) = explode(';', $_POST['data']);
list(, $base64) = explode(',', $data);
unset($data);
$decoded = base64_decode($base64, true);
unset($base64);

if (false !== $decoded) {
  header('Content-type: ' . $type);
  header('Content-Disposition: attachment; filename="file.png"');
  header('Cache-Control: max-age=0');
  echo $decoded;
} else {
  header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);
}

关于javascript - 编辑后将大 Canvas 保存为数据 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28577829/

相关文章:

javascript - 将 GSAP 与 Canvas 集成以制作曲线时间轴

javascript - Bootstrap Popover 下的 Highchart 数据渲染

javascript - 如何使用javascript解析xml键名及其值?

javascript - 正则表达式删除脚本和样式标签+内容Javascript

html - 有没有可能让这个div顺利移动?

html - checkbox状态改变时如何防止页面跳转?

javascript - div 与背景图像大小相同

canvas - Gnuplot: Canvas 大小

Javascript array.push() 特殊代码

javascript - 无法向 DOM 添加元素