javascript - 如何将 HTML5 canvas 元素保存为图像?

标签 javascript android canvas ibm-mobilefirst

我正在使用 IBM Worklight 6.0 开发 native 移动应用程序。

我的应用程序中有一个 Canvas 元素,我需要将其保存为移动设备本地存储中的图像文件。代码如下:

HTML:

<body>
<div id="sketch">
    <canvas id="paint"></canvas>
</div>
<input type="button" name="saveCanvas" value="Save" onclick="saveCanvas()">

    <script src="js/canvas.js"></script>
</body>

Java 脚本:

function saveCanvas() {

 var canvas = document.getElementById("paint");        
 var context = canvas.getContext("2d");                   

 var myimage = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); 
 window.location.href=myimage; 

}

我需要一个弹出窗口来允许用户将图像保存在本地存储中。现在的问题是,当我在 Worklight Mobile Browser Simulator 中测试应用程序时,会打开一个弹出窗口来保存图像,但当我在 Android 虚拟设备或我的设备中测试它时,它不起作用。

请帮助我了解如何将 Canvas 另存为设备本地存储中的图像。

最佳答案

如果此应用程序是一个不基于 Worklight/Cordova 的 Web 应用程序,您可以使用您的代码或 this HTML5 Canvas example它确实会起作用...

但是,在 Cordova 应用程序(或 Worklight 应用程序)的上下文中,Cordova WebView 没有“下载权限”。所以你需要使用Cordova File or FileTransfer API将转换后的图像保存到本地存储。

您也可以尝试使用这个Cordova插件:Canvas2ImagePlugin

  • 由于您使用的是 Worklight 6.0(它使用 Cordova 2.6),因此您需要使用该插件的 v0.2。这个版本缺少 Java 实现,因此您需要从 v0.4 复制它并进行一些修改,我相信...

  • 如果您选择升级到使用 Cordova 3.1 的 Worklight 6.1,则可以使用该插件的 v0.5,除了插件指南中所写的内容之外,不需要任何其他内容。

您当然可以选择自己编写一个或 fork 上面的...

关于javascript - 如何将 HTML5 canvas 元素保存为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809976/

相关文章:

javascript - 在 Chrome 通知中打开网址

javascript - 谷歌图表传奇堆积如山

ScrollView 中的 Android 按钮大小为屏幕的一半

android - 如何从 OPEN_DOCUMENT Intent 获取文件系统路径?

javascript - 将对象置于 Canvas 中居中

javascript - 单击元素外部以隐藏它,不适用于多个元素

JavaScript:是否提升了属性函数?

android - 以编程方式创建 View 后添加样式

javascript - 有没有办法用相对定位来绘制 Canvas 图像

Delphi - 绘制文本,使其在重新绘制其下方的图像后不会消失