我正在开发一个用于慢速(或无)互联网环境的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 answer或this answer并没有告诉我为手机屏幕应用缓存图像的最佳方式是什么。我想知道是否有更好的方法将图像编码为base64,但我真正的问题是:“为手机应用程序存储/缓存我的图像的最佳方法是什么?”
答案 0 :(得分:2)
创建canvas
,使用drawImage
加载图片并使用toDataURL()
转换为base64编码的字符串
相关答案:Get image data in JavaScript?
创建和转换画布可能需要一些时间。
某些较旧的Android手机不支持toDataURL()
并假装它正在通过返回无用的字符串来工作。 data:,
使用readAsDataURL
中的FileReader
来读取文件并将数据作为base64编码数据网址返回。
相关答案:Phonegap encode image base64
对于缓存,您可以搜索“延迟加载图像”。