无法使用imageSource模块

时间:2017-01-27 19:02:39

标签: javascript android image nativescript

上下文

我试图下载用户' Facebook个人资料图片到本地存储,以便我可以显示它而无需重新调用Facebook。

代码

我使用模块image-source下载图片,使用模块file-system访问设备的本地存储空间。

大部分代码都引用the Nativescript image-source documentation page

var imageSource = require("image-source");
var fs = require("file-system");

exports.theFunction = function(args){
    //...
        var img = imageSource.fromFile("http://graph.facebook.com/"+user.id+"/picture?type=large");
        var folder = fs.knownFolders.documents();
        var path = fs.path.join(folder.path, "profilePic.jpg");
        console.log(path);

        var saved = img.saveToFile(path, enums.ImageFormat.jpg);
        appSettings.setString("imgLocal",path);

        console.log("Image Saved Successfully");
    //...
}

输出

  

/data/user/0/com.foo.bar/files/profilePic.jpg

我从未见过"图像成功保存"消息输出到控制台,我无法使用模拟器验证图像是否已存储在文件系统中(我在没有设备的情况下开发Android)。

我还尝试将保存事件包装在if标记中,假设saveToFile()的输出是布尔值:

if(img.saveToFile(path, enums.ImageFormat.jpg)) console.log("success");
    else console.log("failure");

......但是这也没有输出任何内容。

问题

如何将图像从URL保存到设备的本地存储?

参考

1 个答案:

答案 0 :(得分:0)

我认为这里的主要问题在于该行,因为ImageSource仅适用于本地文件,而不是网址:

var img = imageSource.fromFile("http://graph.facebook.com/"+user.id+"/picture?type=large");


你应该下载图片,而不是从网址设置来源。关于下载图像,您可以在这里阅读: https://docs.nativescript.org/cookbook/ui/image-cache

或尝试这样的事情并以某种方式保存:

var image = new ImageModule.Image();
image.src = "https://www.google.com/images/errors/logo_sm_2.png";

但关于这一点,我不太确定。我从未使用过nativescript,只是浏览了文档。