base64的图像返回null

时间:2018-05-23 11:32:50

标签: nativescript

我正在尝试将图像转换为base64但是我得到一个null结果,任何人都有线索?我找到了一些如何从相机拍摄照片并转换为b64的例子,但我找不到如何将图像标签转换为b64的任何内容。

<image @loaded="loaded" src="myimg.jpg">
var ImageSourceModule = require("tns-core-modules/image-source");

function loaded(args){    
let imageSource = ImageSourceModule.fromNativeSource(args.object.nativeElement);
console.log(imageSource.toBase64String('jpeg'))
}

1 个答案:

答案 0 :(得分:0)

由于在完全加载之前隐藏图像,您可能会获得空数据。尝试在完全加载后转换图片,如下面的代码段所示。

要在加载图片后进行转换,我们会使用图片的loaded事件和isLoading属性。

loaded(args) {
    console.log(args.eventName);
    console.log(args.object);

    var img = args.object;

    console.log("img.isLoading: " + img.isLoading);
    console.log("img.isLoaded: " + img.isLoaded);
    if(img.isLoading){

        img.on("isLoadingChange", function (args) {
            console.log("isloading",args.value);
            console.log("isloaded",args.object.isLoaded);
            let img       = args.object;
            let imageSource= ImageSource.fromNativeSource(img);
            console.log(imageSource.toBase64String('jpeg'))
        });
    }else if(!img.isLoading&&img.isLoaded){
        let imageSource= ImageSource.fromNativeSource(img);
        console.log(imageSource.toBase64String('jpeg'))
    }else{
        console.log("image loading failed");
    }
}