【问题标题】:php/javascript save canvas as filephp/javascript 将画布保存为文件
【发布时间】:2017-03-25 22:14:22
【问题描述】:

我有一个画布,需要将它保存到本地磁盘。 Javascript 无法将 AFAIK 写入磁盘。因此,我考虑将画布保存在服务器上(我知道如何执行此操作)并自动启动下载,如下所述: How to Automatically Start a Download in PHP? 此过程是否有更直接的解决方案?

【问题讨论】:

    标签: javascript canvas download


    【解决方案1】:

    是的,您现在可以在客户端创建图像下载。浏览器处理与客户端文件系统的交互。有一个名为 download.js 的库,它使这个过程变得简单。

    var data = canvas.toDataURL();
    var fileName = "myCoolPicture.png";
    var strMimeType = 'image/png';
    download(data, fileName, strMimeType);
    


    如何从 SVG 图像中获取 dataURI
    function getSVGDataURL(svg){
        return "data:image/svg+xml;utf8,"+svg.outerHTML;
    }
    
    var svg = document.getElementById('svg');
    var dataurl = getSVGDataURL(svg);
    

    【讨论】:

    • 感谢您的快速回复。那真的很棒!但是,需要提示用户输入位置和文件名。如何做到这一点?
    • @Sempervivum - 它的工作方式与 PHP 相同。它只是发送标题,告诉浏览器将文件保存到磁盘,然后浏览器提示用户选择一个位置,在该位置大多数系统允许用户更改文件名。或者,您可以使用 JS 从用户那里获取文件名,然后将其传递给函数。
    • 这真的很棒,正是我所需要的。然而与此同时,我发现我的图像不是画布而是 SVG(Highcharts 图)。 toDataURL 也适用于 SVG 吗?
    • 很抱歉给您带来不便,起初我很确定 Highcharts 将图表作为画布提供。您的更新完美运行,再次感谢。我试图支持你的回答,但论坛不接受是因为我的声誉水平太低。
    • @Sempervivum - 这对我来说并没有什么不方便,但对于搜索“如何将画布保存到文件”的人来说会很不方便,最终发现答案是针对 SVG 而不是画布:) 如果这确实回答了您的问题,请点击答案左侧的复选框。快乐编码:)
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2016-01-28
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多