【问题标题】:accessing cache pictures phonegap访问缓存图片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)

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

【问题讨论】:

    标签: javascript cordova camera


    【解决方案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 方法而不是空循环!

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 2016-04-16
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2018-02-09
      • 2012-01-19
      相关资源
      最近更新 更多