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

直接可能ではないようです:

Base64 文字列から PNG ファイルへの変換

ローカルで変換を行うこのライブラリを確認してください - javascript での base64 デコード

于 2012-06-29T13:09:09.787 に答える
0

toDataUrl はバージョン 4 までの Android では単なるスタブであるため、実際には何もしません。したがって、「img64」の値はおそらく null であり、マットをさらに悪化させるために、とにかく PhoneGap FileWriter を使用してバイナリ データを書き込むことができます。そのため、これを行うには別の方法を考え出す必要があります。

ただし、 Signature Capture for Androidをインテントとして呼び出して PhoneGap アプリに統合することに成功した人を知っています。それが私がたどるルートです。

于 2012-06-29T15:57:16.603 に答える
0

Simon が言ったように、これはバージョン 4 の Android では不可能です。テストする機会はありませんが、残りのコードはおそらく正しいでしょう。

頭に浮かんだアイデアは、キャンバスのピクセルをピクセルごとに読み取り、自分でバイナリを作成することでした。このライブラリには、キャンバスを BMP に変換する機能が組み込まれています。そこから、以前に PNG で試したように、ファイルとして保存できる場合があります。

繰り返しますが、これは単なるブレーンストーミングです。私は何もテストしていません。個人的には、Simon が思いついたソリューションを使用します。より簡単で、おそらくはるかに安定しているためです。

于 2012-06-30T11:18:50.860 に答える