我正在使用 Nihilogic 的库Canvas2Image将画布绘图转换为 PNG,并让我的应用程序的用户能够下载该图像。
我需要的是能够给可下载文件一个名称和png扩展名(例如“goalboard.png”),而不是像八位字节流一样下载,没有可识别的扩展名和名称“下载”,因为平均乔不知道如何处理这样的文件。我需要在客户端执行此操作,因为根据其中的数据量,将该字节流发送到服务器可能需要长达 20 秒(这是一个大画布!)。更不用说事后检索图像了......
那么,我该怎么做呢?
我正在使用 Nihilogic 的库Canvas2Image将画布绘图转换为 PNG,并让我的应用程序的用户能够下载该图像。
我需要的是能够给可下载文件一个名称和png扩展名(例如“goalboard.png”),而不是像八位字节流一样下载,没有可识别的扩展名和名称“下载”,因为平均乔不知道如何处理这样的文件。我需要在客户端执行此操作,因为根据其中的数据量,将该字节流发送到服务器可能需要长达 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_TO_YOUR_HTML_PAGE', function() { page.render('PATH_TO_PNG/example.png'); phantom.exit(); }); 3. 下载 Phantom ( http://phantomjs.org ),解压缩,在 bin 目录下你会找到 phantomjs 可执行文件。运行:./phantomjs svgToPgn.js 您的 png 文件将保存在:PATH_TO_PNG/example.png
我需要在客户端执行此操作
好吧,这种要求会扼杀你的机会。对不起。
你不能做你想做的事,你所拥有的最好的就是显示图像并告诉用户右键单击另存为。