8

フォンギャップ初心者です。phonegapの公式チュートリアルを使用して、AndroidでSDカードからファイルを読み取ってイメージしようとしています。問題は、画像が表示されず、代わりに疑問符が表示されることです。

私のコード:

var pictureSource;  
var destinationType;  


document.addEventListener("deviceready",onDeviceReady,false);


function onDeviceReady(){ 

   document.getElementById("test").innerHTML="onready about to request";
   window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, onFail);}





function onFail(message) {
  alert('Failed because: ' + message);
}
function gotFS(fileSystem) {
    fileSystem.root.getFile("1.jpg", null, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readDataUrl(file);

}

function readDataUrl(file) {
     var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("Read as data URL");
        console.log(evt.target.result);

    };  
    document.getElementById("smallImage").style.display='block'; 
    document.getElementById("smallImage").src = reader.readAsDataURL(file);

}



function fail(evt) {
    console.log(evt.target.error.code);
}



</script>

編集: API 16 と min-sdk8 を使用すると、「smallImage」は onphotodatasuccess で正常に動作するタグです。したがって、ここではカメラは問題ではありません。カメラ機能に関連するものはすべて問題ありません。SDカードからの読み取りは、割り当てステートメントで問題を引き起こしています。
document.getElementById("smallImage").src = reader.readAsDataURL(ファイル); これを追加すると、文字列と不明なクロム エラー -6 が表示されます。それ以外の場合は、通常の画像変換文字列が表示されます。ありがとう

4

2 に答える 2

9

これが実際の例です:

編集:

<!DOCTYPE html>
<html>
  <head>
    <title>Pick Photo</title>

    <script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    document.addEventListener("deviceready",onDeviceReady,false);

    function onDeviceReady() {
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, onFail);
    }

     function onFail(message) {
      alert('Failed because: ' + message);
    }

    function gotFS(fileSystem) {
        fileSystem.root.getFile("1.jpg", {create: true}, gotFileEntry, fail);
    }

    function gotFileEntry(fileEntry) {
        fileEntry.file(gotFile, fail);
    }

    function gotFile(file){
        readDataUrl(file);  
    }

    function readDataUrl(file) {
           var reader = new FileReader();
           reader.onloadend = function(evt) {
           console.log("Read as data URL");
           console.log(evt.target.result);
           document.getElementById("smallImage").style.display='block'; 
           document.getElementById("smallImage").src = evt.target.result;   
        }; 
        reader.readAsDataURL(file);
    }

    function fail(evt) {
        console.log(evt.target.error.code);
    }
    </script>
  </head>
  <body>
    <img style="display:none;width:60px;height:60px;" id="smallImage" src="" />
    <img style="display:none;" id="largeImage" src="" />
  </body>
</html>

これにより、SDカードから指定された画像を選択できます。

これがお役に立てば幸いです。

ありがとう。

于 2012-12-13T11:20:13.373 に答える
0

これを試して:

<script>

document.addEventListener("deviceready",onDeviceReady,false);

function onDeviceReady(){ 
  //This file have to exist
  var location= "file:///storage/emulated/0/DCIM/Camera/20141105_124208.jpg";
  window.resolveLocalFileSystemURL(location, function(oFile) {
    oFile.file(function(readyFile) {
      var reader= new FileReader();
      reader.onloadend= function(evt) {
        document.getElementById("smallImage").style.display='block'; 
        document.getElementById("smallImage").src = evt.target.result;
      };
      reader.readAsDataURL(readyFile); 
    });
  }, function(err){
    console.log('### ERR: filesystem.directoryUp() - ' + (JSON.stringify(err)));
});

</script>
于 2014-11-19T17:31:18.263 に答える