在 nativescript 中保存图像

Save image in nativescript

我有一个场景需要将 <Image /> 标签中的图像保存到本地文件。代码确实将图​​像保存到文件中,但我得到一个空图像,我知道这听起来很简单,但我是 NS 的新手,在 google 上找不到任何东西,也许有人知道为什么?

XML:

<page>
   <image src="pic.png" id="img"/>
</page>

JS:

let img       = page.getViewById("img");
let path      = fs.path.join(fs.knownFolders.documents().path, "pic.png");    
let src       = ImageSource.fromNativeSource(img);
let saved     = src.saveToFile(path, "png");

您可能会因为在完全加载之前保存图像而得到空图像。尝试在图像完全加载后保存图像,如下面的代码片段所示。

为了在加载图像后保存图像,我们使用图像的 loaded 事件和 isLoading 属性。

XML:

<page>
   <image src="pic.png" loaded="onImageLoaded" id="img"/>
</page>

TS:

onImageLoaded(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 path      = fs.path.join(fs.knownFolders.documents().path, "pic.png");    
            let src       = ImageSource.fromNativeSource(img);
            let saved     = src.saveToFile(path, "png");
        });
    }else if(!img.isLoading&&img.isLoaded){
        let path      = fs.path.join(fs.knownFolders.documents().path, "pic.png");    
        let src       = ImageSource.fromNativeSource(img);
        let saved     = src.saveToFile(path, "png");
    }else{
        console.log("image loading failed");
    }
}