访问缓存图片phonegap

Posted

技术标签:

【中文标题】访问缓存图片phonegap【英文标题】:accessing cache pictures phonegap 【发布时间】:2013-03-22 21:33:51 【问题描述】:

我正在使用 Phonegap 的相机功能在我的应用程序中保存图片。当我尝试通过其保存的 file_URI(我从相机获得的)获取文件时,图像不会加载。

函数 toBase64(url) var canvas = document.createElement("canvas"); var ctx = canvas.getContext('2d'); var img = new Image(); img.src = 网址; 如果(img.height!= 0) 变量高度 = img.height,宽度 = img.width; canvas.height = 高度; 画布.宽度 = 宽度; ctx.drawImage(img, 0, 0, 宽度, 高度); 尝试 var dataURL = canvas.toDataURL("image/jpg"); return dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 捕捉(错误) console.log(“错误”+错误); 别的 alert("路径错误!");

图像保存在应用程序的缓存文件夹中(/data/data/my.app/cache)

关于问题可能来自哪里的任何想法?

【问题讨论】:

【参考方案1】:

我修复了这个问题,不得不使用 Phonegap 的 FileReader 对象。

变量 base64; 函数 toBase64(文件名) window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fileSystem) // 文件系统的根是应用程序的缓存文件夹:/storage/emulated/0/android/data/com.yourcompany.whatever fileSystem.root.getFile(filename, null, function(fileEntry) fileEntry.file(函数(文件) var reader = new FileReader(); reader.onloadend = 函数(evt) 控制台.log(evt.target.result); // 触发回调 base64 = evt.target.result; ; reader.readAsDataURL(文件); , 失败); , 失败); , 失败); // 我们等待阅读器完全加载,然后我们返回 base64 加密数据! 而(base64 ==“”) base64 = base64.replace(/^data:image\/(png|jpg|jpeg);base64,/, ""); 返回base64;

不要认为 "while(base64 == "" ) " 是一个好习惯...

编辑:我使用了 this gentleman 的 do_when 方法而不是空循环!

【讨论】:

以上是关于访问缓存图片phonegap的主要内容,如果未能解决你的问题,请参考以下文章

WPFUWP借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx

WPFUWP借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx

使用.htaccess进行浏览器图片文件缓存

Android中图片的三级缓存策略

Android中图片的三级缓存详解

Android中图片的三级缓存详解