将图像保存在nativescript中

时间:2018-05-19 06:48:48

标签: nativescript angular2-nativescript nativescript-telerik-ui

我有一个场景需要将图像从 Zip::OutputStream.write_buffer(::StringIO.new(''), Zip::TraditionalEncrypter.new('password')) do |out| out.put_next_entry("my_file.txt") out.write my_data end.string #error: **NameError (uninitialized constant Zip::TraditionalEncrypter):** 标记保存到本地文件。代码确实将图​​像保存到文件中,但我得到一个空图像,我知道它听起来很简单,但我是NS新手,无法在谷歌上找到任何东西,也许有人知道为什么?

XML:

<Image />

JS:

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

enter image description here

1 个答案:

答案 0 :(得分:1)

由于在完全加载之前保存图像,您可能会获得空图像。尝试在完全加载后保存图像,如下面的代码段所示。

要在图片加载后保存图片,我们正在使用图片的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");
    }
}