0

我正在尝试在设备的 SD 卡上存储一个签名(在 canvas 元素上绘制)。我正在使用 eclipse + phonegap(版本 1.7.0)。

我遇到了以下链接-

https://groups.google.com/forum/?fromgroups#!topic/phonegap/I23hrgFOgN8

我尝试了以下代码 -

var canvas = document.getElementById("can");
var writer = new FileWriter("/mnt/sdcard/sign.png");
ctxt = canvas.getContext("2d");
var img = canvas.toDataURL();
var img64 = canvas.toDataURL("image/png").replace(/data:image\/png;base64,/, '');
var img = atob(img64);
navigator.notification.alert(img64);
writer.write(img64);

但我遇到以下错误 - 未捕获的错误:无法解码 base64(在我使用 atob 的行)。

4

3 回答 3

0

那么 toDataUrl 只是 Android 版本 4 上的一个存根,所以它实际上没有做任何事情。所以“img64”的值可能是空的,为了让mattes变得更糟,你仍然可以使用PhoneGap FileWriter编写二进制数据。所以你需要想出一种不同的方法来做到这一点。

但是,我确实知道有人成功地将Android 的 Signature Capture集成到他们的 PhoneGap 应用程序中,并将其称为意图。所以这就是我要走的路线。

于 2012-06-29T15:57:16.603 回答
0

似乎不能直接:

从 Base64 字符串转换为 PNG 文件

检查这个库,它在 javascript 中进行本地 base64 解码的转换。

于 2012-06-29T13:09:09.787 回答
0

正如西蒙所说,这在版本 4 下的 Android 上是不可能的。您的其余代码可能是正确的,尽管我没有机会对其进行测试。

想到的一个想法是逐个像素地读取画布像素,然后自己创建一个二进制文件。这个库有一个内置的函数来将画布转换为 BMP。从那里您可以将其保存为文件,就像您之前尝试使用 PNG 一样。

同样,这只是一些头脑风暴,我没有测试任何东西,我个人也会采用 Simon 提出的解决方案,因为它更容易并且很可能也更稳定。

于 2012-06-30T11:18:50.860 回答