访问缓存图片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