6

私はphonegapアプリケーションを開発しており、このnavigator.getPictureメソッドを使用して画像を取得しています。

私が写真を撮る方法は次のとおりです。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
destinationType: Camera.DestinationType.FILE_URI });

function onSuccess(imageURI) {
    var image = document.getElementById('myImage');
    image.src = imageURI;
}

phonegapdocの例のように。

imageURIを使用して、後でアップロードするために画像データに変換できるようにしたい。(phonegapのFileTransferは使いたくない)

これまで、JavaScriptで画像データを取得する両方を試しましたか?JavaScriptで文字列をBase64にエンコードするにはどうすればよいですか?

次のことを試してみると、

function onSuccess(imageURI) {
    getBase64Image(imageURI);
}

function getBase64Image(img) {
    // Create an empty canvas element
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    // Copy the image contents to the canvas
    var ctx = canvas.getContext("2d");
   ctx.drawImage(img, 0, 0);

   // Get the data-URL formatted image
   // Firefox supports PNG and JPEG. You could check img.src to
   // guess the original format, but be aware the using "image/jpg"
   // will re-encode the image.
   var dataURL = canvas.toDataURL("image/png");

   console.log(dataURL); //here is where I get 'data:,'       

   return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

dataURLそして、戻る前に印刷してください。私data:,はコンテンツとして取得します。

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

0

それをDATA_URLとして取得してみることができます。画像がBase64文字列に変換されるときにメモリ不足エラーが発生する可能性があるため、マイレージは異なる場合があります。

navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
    destinationType: Camera.DestinationType.DATA_URL });

function onSuccess(imageURI) {
    var image = document.getElementById('myImage');
    image.src = imageURI;
}

または、 FileReader.readAsDataURL()を使用することもできます。

canvas.toDataURLメソッドは、以前のバージョンのAndroidには実装されていません。

于 2012-11-07T01:35:12.730 に答える