2

我正在处理的应用程序

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

问题

使用 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

高度赞赏帮助!
此服务器上启用了 PS 跨源请求!

备择方案

如果那里有更好的缓存图像替代方案,我会很高兴听到它。我在这里阅读了一些关于 HTML 缓存清单的信息,但我不知道这是否适合我的问题。

重复的问题

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

4

1 回答 1

2

主意

创建canvas、加载图像,使用drawImagetoDataURL()用于转换为 base64 编码的字符串

相关答案:在 JavaScript 中获取图像数据?

注意事项

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

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

另一个想法

使用readAsDataURLinFileReader读取文件并将数据作为 base64 编码的数据 url 返回。

相关答案:Phonegap 编码图像 base64


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

于 2013-04-02T18:14:49.563 回答