2011-07-14 19 views
21

से चित्र को चुनें किसी को भी मुझे बता सकते हैं, या कैसे Phonegap/एंड्रॉयड में फोन की छवि गैलरी से एक छवि प्राप्त करने के लिए की दिशा में मुझे बिंदु? कैमरे तक पहुंचने पर दस्तावेज़ हैं (जो बहुत अच्छा काम करता है) लेकिन मौजूदा छवि का चयन नहीं कर रहा है।Phonegap - गैलरी

मैं Phonegap/Javascript बजाय जावा के लिए देख रहा हूँ।

अग्रिम धन्यवाद!

उत्तर

46

एर्म, Camera डॉक्स इस कवर किया। क्या यह आपके लिए काम नहीं कर रहा है? विवरण के लिए 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 डॉक्स कुछ तस्वीरें के साथ कर सकता। यह खुद को कम करता है। PHOTOLIBRARY बनाम SAVEDPHOTOALBUM –

+0

के पाठकों के लिए अच्छाई धन्यवाद क्या अंतर है मदद मिलेगी पर या तो सामान्य छवि पुस्तकालय डिवाइस, या एक विशिष्ट एल्बम। (ध्यान दें कि एंड्रॉइड के कुछ संस्करणों पर इन दो विकल्पों के साथ क्विर्क हैं)। – Mirko

+0

@Mirko क्या यह टिन पर कहते हैं:: यह भी मेरे जैसे एक मछली के ध्यान अवधि के साथ लोगों को :) :) बातें – Ben

1

इस post पर एक नजर डालें, तो यह आपको मदद मिल सकती है।

कभी कभी, आप एक मौजूदा छवि अपलोड के साथ कुछ समस्या का सामना कर सकते हैं। समाधान सरल है, प्रति this answer। पुस्तकालय निम्नलिखित

// 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); 
5

तुम भी उपयोग कर सकते हैं: संक्षेप में, आप एक के लिए देशी Android यूआरआई कन्वर्ट करने के लिए है कि एपीआई का उपयोग कर सकते हैं की जरूरत है https://github.com/wymsee/cordova-imagePicker के रूप में यह है, छोटे लागू करने के लिए आसान है और करता है मैं इस एक पसंद करते हैं कैमरे की अनुमति की आवश्यकता नहीं है।

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

हैलो @ विस्किन। हाइजैक करने के लिए खेद है, लेकिन मुझे आज आपकी प्लगइन मिली, लेकिन मेरे फोन पर https://jsfiddle.net/kartagis/pjdqp3ku/ पर कोड ~ 15 सेकंड लगता है। क्या मुझे प्रक्रिया को गति देने के लिए स्थानीय स्टोरेज या कुछ का उपयोग करना चाहिए? –

+0

कृपया परियोजना के github पेज पर एक मुद्दा खोलें – viskin

0

आसान

पहले सीएमडी में परियोजना के लिए कैमरा प्लगइन जोड़ें।

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

और फिर प्रयास करें इस

<!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> 

मैं 100% यकीन है कि यह काम करता है हूँ।

संदर्भ यहाँ Choose an image from Camera or Gallery – PhoneGap