2012-11-06 8 views
6

bir görüntü kodlamak base64 Görüntü almak için bir telefon uygulaması uygulaması ve navigator.getPicture yöntemini kullanarak geliştiriyorum.Nasıl javascript

Resmi ben alıyorum yoludur: Sadece PhoneGap doc en verilen örnekte olduğu gibi

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

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

.

Daha sonra yüklemek için, imageURI öğesini kullanıp daha sonra resim verilerine dönüştürmek istiyorum. dönmeden önce,

Şimdiye kadar hem Get image data in JavaScript? ve

ben aşağıdakileri deneyin How can you encode a string to Base64 in JavaScript? denedi

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,/, ""); 
} 

Ve baskı dataURL (Ben PhoneGap en FileTransfer kullanmak istemiyorum). İçerik olarak sadece data:,'u aldım.

Neyi yanlış yaptığım hakkında bir fikrin var mı?

+0

SQ. Çok iyi bir ilk soru! +1 – simbabque

cevap

0

Bunu DATA_URL olarak almayı deneyebilirsiniz. Görüntü, Base64 dizesine dönüştürüldüğünde bellek yetersizliğinden kaçabileceğinden, kilometreniz değişebilir.

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

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

Alternatif olarak FileReader.readAsDataURL()'u kullanabilirsiniz.

canvas.toDataURL yöntemi, Android'in önceki sürümlerinde uygulanmaz.

+0

Merhaba Simon, readAsDataURL yapmayı denedim ama onunla hiçbir şansı yoktu. DATA_URL kullanmak istemedim ama bence tek seçenek olabilir. Teşekkürler. – fabian