2011-07-14 36 views
21

Phonegap/Androidの電話機の画像ギャラリーから画像を取得する方法を教えてもらえますか?カメラにアクセスして(すばらしい)、既存の画像を選択しないようにするためのドキュメントがあります。Phonegap - ギャラリーから画像を選択

私はJavaではなくPhonegap/Javascriptを探しています。

ありがとうございます!

答えて

46

Erm、Camera docsこれをカバーします。これはあなたのために働いていないのですか?詳細はCamera.PictureSourceTypeをご覧ください。ドキュメントサイトは、このように画像を導出するため、この例をギブンス:

function getPhoto(source) { 
    // Retrieve image file location from specified source 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI, 
    sourceType: source }); 
} 

sourceTypeは、ここに重要なビットです。これはCamera.PictureSourceType.CAMERA(デフォルト)にすることができます。より便利な場合は、Camera.PictureSourceType.PHOTOLIBRARYまたはCamera.PictureSourceType.SAVEDPHOTOALBUMにすることができます。

Camera Documentation

+15

グレート答えですが、私はPhoneGapのドキュメントはいくつかの写真を行うことができると思います。それは自分自身を裏付けている。それはまた、私のような魚の注意のスパンの人々を助ける:)物事の読者のために良さをありがとう:) –

+0

違いは何ですか:光化学vs SAVEDPHOTOALBUM – Mirko

+0

@Mirkoそれは錫で何を言う:一般的な画像ライブラリデバイス、特定のアルバムのいずれかです。 (ただし、Androidの特定のバージョンでは、これらの2つのオプションに奇妙な点があることに注意してください)。 – Ben

1

このpostを見てください、それはあなたを助けるかもしれません。

既存の画像をアップロードする際に問題が発生することがあります。その解決策は簡単で、this answerです。簡単に言えば、あなたはAPIが使用できるものにネイティブAndroidのURIを変換する必要があります。

あなたはまた、次のライブラリを使用することができます
// URL you are trying to upload from inside gallery 
window.resolveLocalFileSystemURI(img.URI, function(entry) { 
    console.log(entry.fullPath); 
    }, function(evt){ 
    console.log(evt.code); 
    } 
); 
1
document.addEventListener("deviceready",function(){ 

      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ 
       var sdcard = fileSystem.root; 

       sdcard.getDirectory('dcim/camera',{create:false}, function(dcim){ 
        var directoryReader = dcim.createReader(); 
        directoryReader.readEntries(function(entries){ 
         for (var i=0; i<entries.length; i++) { 
          entries[i].file(function(f){ 
           var reader = new FileReader(); 
           reader.onloadend = function (evt) { 
           var url= evt.target.result;//base64 data uri 

           console.log(url) 
           reader.abort(); 
          }; 
          reader.readAsDataURL(f); 

          },function(error){ 
           console("Unable to retrieve file properties: " + error.code); 

          }); 

         } 

        },function(e){ 
         console.log(e.code); 
        }); 


       }, function(error){ 
        console.log(error.code); 
       }); 


      }, function(evt){ // error get file system 
       console.log(evt.target.error.code); 
      }); 



     } , true); 
0

私はcordova-plugin-photo-libraryに取り組んでいます。これは、プラットフォーム上のすべての写真をデバイス上で列挙する方法を提供するプラグインです。

使用法:

cordova.plugins.photoLibrary.getLibrary(function (library) { 
 
    // Here we have the library as array 
 
    cordova.plugins.photoLibrary.getThumbnailUrl(library[0], 
 
     function (thumbnailUrl) { image.src = thumbnailUrl; }, 
 
     function (err) { console.log('Error occured'); }, 
 
     { 
 
      thumbnailWidth: 512, 
 
      thumbnailHeight: 384, 
 
      quality: 0.8 
 
     }); 
 
    });

+0

こんにちは@viskin。申し訳ありませんがハイジャックしましたが、プラグインは今日見つかりましたが、私の電話ではhttps://jsfiddle.net/kartagis/pjdqp3ku/のコードが15秒かかります。プロセスを高速化するためにlocalStorageなどを使用する必要がありますか? –

+0

プロジェクトのgithubページで問題を開いてください – viskin

0

簡単

まず CMDでのプロジェクトにカメラプラグインを追加します。その後、

F:\phonegap>myapp>cordova plugin add cordova-plugin-camera 

そして、私はそれが動作する100%確信しているこの

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="UTF-8"> 
     <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'" /> 
     <title>PhoneGap app</title> 

     <!-- Script --> 
     <script type="text/javascript" src="cordova.js" ></script> 
     <script type='text/javascript' src='jquery-3.0.0.js' ></script> 
     <script type='text/javascript'> 
     $(document).ready(function(){ 

      // Take photo from camera 
      $('#but_take').click(function(){ 
       navigator.camera.getPicture(onSuccess, onFail, { quality: 20, 
        destinationType: Camera.DestinationType.FILE_URL 
       }); 
      }); 

      // Select from gallery 
      $("#but_select").click(function(){ 
       navigator.camera.getPicture(onSuccess, onFail, { quality: 50, 
        sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
        allowEdit: true, 
        destinationType: Camera.DestinationType.FILE_URI 
       }); 
      }); 

      // Change image source 
      function onSuccess(imageData) { 
       var image = document.getElementById('img'); 
       image.src = imageData + '?' + Math.random();; 
      } 

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

     }); 
     </script> 
    </head> 
    <body> 
     <div style="margin:0 auto; width:30%!important;text-align: center;"> 
      <img src="img/cam2.jpg" id='img' style="width: 100px; height: 100px;"> 
     </div><br/> 
     <div style="width:100%; text-align:center; padding:10px;"> 
      <button id='but_take'>Take photo</button> 
      <button id='but_select'>Select photo from Gallery</button> 
     </div> 
    </body> 
</html> 

を試してみてください。

参照はここ Choose an image from Camera or Gallery – PhoneGap

関連する問題