在 visual studio apache cordova 中将图像转换为 base64 字符串

Convert image into base64string in visualstudio apache cordova

我正在开发 VS2015 cordova 应用程序。当我从图库获取图像并将其转换为 base64string 时遇到问题。我成功地获得了 base64string,但是当我显示它时,我总是得到黑色图像。这是我的代码:

    function onPhotoURISuccess(imageURI) {
     var largeImage = document.getElementById('smallImage');
    largeImage.style.display = 'block';
    largeImage.src = imageURI;
    basestrg = encodeImageUri(imageURI);

}

function getPhoto(source) {
           navigator.camera.getPicture(onPhotoURISuccess, onFail, {
        destinationType: Camera.DestinationType.NATIVE_URI, mediaType: Camera.MediaType.Photo,
        sourceType: source
    });
}
function encodeImageUri(imageUri) {
    var c = document.createElement('canvas');
    var ctx = c.getContext("2d");
    var img = new Image();
    img.onload = function () {
        c.width = this.width;
        c.height = this.height;
        ctx.drawImage(img, 0, 0);
    };
    img.src = imageUri;
    var dataURL = c.toDataURL("image/jpeg");
    return dataURL;
}

任何想法

我试图让你的特定代码工作,但我看到了与黑框相同的最终结果。

不过,我认为有一种更简单的方法可以实现您的目标。您可以使用名为 DATA_URL 的选项,而不是将 NATIVE_URI 作为目标类型传递。此 DATA_URL 选项将为您提供 base64 编码的字符串,您随后可以在图像元素中使用该字符串。

这是一些代码,当我将它放入您的 getPhoto() 函数时对我有用。我改编自 Cordova Camera Plugin Documentation:

navigator.camera.getPicture(onSuccess, onFail, {
    destinationType: Camera.DestinationType.DATA_URL,
    mediaType: Camera.MediaType.PICTURE,
    sourceType: source
});

function onSuccess(imageData) {
    var image: any = document.getElementById('myPicture');
    image.src = "data:image/jpeg;base64," + imageData;
}

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