Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 如何在计算机上以用户友好的方式保存从画布转换的图像?_Javascript_Canvas_Mime Types - Fatal编程技术网

Javascript 如何在计算机上以用户友好的方式保存从画布转换的图像?

Javascript 如何在计算机上以用户友好的方式保存从画布转换的图像?,javascript,canvas,mime-types,Javascript,Canvas,Mime Types,我正在使用Nihilogic的库Canvas2Image将画布图形转换为PNG,并为我的应用程序用户提供下载该图像的可能性 我需要的是能够给可下载的文件一个名称和png扩展名(例如“goalboard.png”),而不是让它像八位组流一样下载,没有可识别的扩展名和名称“download”,因为一般的Joe不知道如何处理这样的文件。我需要在客户端执行此操作,因为将字节流发送到服务器(取决于其中的数据量)最多需要20秒(这是一个大画布!)。更不用说以后检索图像了 那么,我该怎么做呢 我需要在客户端完

我正在使用Nihilogic的库Canvas2Image将画布图形转换为PNG,并为我的应用程序用户提供下载该图像的可能性

我需要的是能够给可下载的文件一个名称和png扩展名(例如“goalboard.png”),而不是让它像八位组流一样下载,没有可识别的扩展名和名称“download”,因为一般的Joe不知道如何处理这样的文件。我需要在客户端执行此操作,因为将字节流发送到服务器(取决于其中的数据量)最多需要20秒(这是一个大画布!)。更不用说以后检索图像了

那么,我该怎么做呢

我需要在客户端完成这项工作

这种要求会扼杀你的机会。对不起


你不能做你想做的事情,最好的办法是显示图像并告诉用户右键单击“另存为”。

其中一个应该可以解决你的问题(使用画布,你可以提取base64格式的图像):


我也有一个很大的RaphaelJs画布,需要允许用户运行一个脚本,将大量画布保存为png图像。 我尝试将raphael转换为svn,然后将svg转换为png,然后使用wget,但这当然不起作用,因为由javascript和wget生成的画布无法处理这一问题。最后,我意识到我可以让我的webapp用svg画布构建一个页面,并使用phantomjs(一种无头浏览器)将其保存为png。它工作得很好

就这么简单。 1.使您的webapp仅使用svg画布构建页面。 2.使用以下代码创建svgToPgn.js文件:

var page=require('webpage')。create(); page.open('URL\u TO\u YOUR\u HTML\u page',function(){ render('PATH_TO_PNG/example.PNG'); phantom.exit(); }); 3.下载phantomjs(),解压它,然后在bin目录中找到phantomjs可执行文件。运行: ./phantomjs svgToPgn.js 您的png文件将保存在:PATH_TO_png/example.png中


事实上,他们已经有了查看的选择,所以下载是额外的(不是我的要求,而是我的客户的要求)。是的,但是你不能创建一个没有服务器参与的下载请求。我理解。我找不到任何关于如何完成这样的事情的信息,所以我假设它。但是我必须尝试。。。