如何从SD卡读取图像文件并将其转换为phonegap中img标签的src?

时间:2014-01-06 10:27:34

标签: javascript cordova

我正在尝试从手机摄像头拍摄的SD卡中读取图像并获取图像src以显示在我的应用上。我尝试了很多解决方案,并得到了很多更新。但它仍然无法正常工作。这是我的代码:

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess);
}
function onFileSystemSuccess(fileSystem){
    fileSystem.root.getFile("test.jpg", {create: false, exclusive: false}, fileSuccess);
}

function fileSuccess(fileEntry){
    fileEntry.file(gotfile);
}

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

function readDataUrl(file){
    var reader = new FileReader();
    reader.onlaodend=function(evt){
        console.log(evt.target.result); 
        document.getElementById("img_test").src=evt.target.result;
    };
    reader.readAsDataURL(file);
}

我正试图获得img的src:

<div>
    <img id="img_test" src="">
</div>

文件路径有什么问题吗?我是phonegap的新手。请让我知道我在这里做错了什么。谢谢...:)

1 个答案:

答案 0 :(得分:1)

以下是一个可以帮助您的工作示例:

<!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卡中选择任何指定的图像。