使用javascript和cordova 2.2.0将jpg / png转换为base64

时间:2013-04-02 17:01:06

标签: javascript cordova base64

我正在开发的应用程序

我正在开发一个用于慢速(或无)互联网环境的Cordova 2.2.0应用程序。
它从CMS系统获取数据。 此数据(JSON)使用Cordova's filesystem本地存储在移动设备上。这提供了此应用程序无法访问互联网的时刻数据。

问题

使用Cordova的文件系统进行数据存储和恢复工作正常。存储到文件系统的数据是JSON。解析此JSON后,它将转换为HTML。问题是,这给了我带有外部源的IMG标签,如下所示:

<img src="http://www.SomeUrl.com/Images/SomeImage.jpg" id="someImage" />

我想加载此图片并使用JavaScript将其转换为base64。如果可以,我将能够将其写入本地文件系统以供离线使用。像这样:

var imageFromURLToBase64(imageURL){ 
    "use strict";

    var image = doSomethingWithUrl(imageURL),
        base64 = "";

    //CONVERT IMAGE TO BASE64 HERE
    return base64;
};

var imageUrl = $("#someImage").attr("src"),
    base64 = imageFromURLToBase64(imageUrl);
//Store base64 image to local filesystem

帮助非常感谢!
P.S。在此服务器上启用了交叉原始请求!

替代

如果有一些更好的替代方法来缓存图像,我会很高兴听到它。 我已经阅读了一些关于HTML缓存清单here的内容,但我不知道这是否适合我的问题。

重复的问题

有更多的人处理这个问题,这些问题的答案并没有解决我的问题。 this answerthis answer并没有告诉我为手机屏幕应用缓存图像的最佳方式是什么。我想知道是否有更好的方法将图像编码为base64,但我真正的问题是:“为手机应用程序存储/缓存我的图像的最佳方法是什么?”

1 个答案:

答案 0 :(得分:2)

创建canvas,使用drawImage加载图片并使用toDataURL()转换为base64编码的字符串

相关答案:Get image data in JavaScript?

注意事项

创建和转换画布可能需要一些时间。

某些较旧的Android手机不支持toDataURL()并假装它正在通过返回无用的字符串来工作。 data:,

另一个想法

使用readAsDataURL中的FileReader来读取文件并将数据作为base64编码数据网址返回。

相关答案:Phonegap encode image base64


对于缓存,您可以搜索“延迟加载图像”。