Cordova Camera插件如何将图片FILE_URI转为base64格式DATA_URL
Cordova FILE_URI转Base64解决方案
通过cordova-plugin-file读取本地图片文件转码,既可以避免DATA_URL模式的高内存风险,也能满足后端base64格式的上传要求,具体实现步骤如下:
1. 安装依赖插件
首先安装文件操作插件:
cordova plugin add cordova-plugin-file
如果是针对特定平台安装,可以补充对应平台参数。
2. 配置相机调用参数
调用相机时指定返回格式为FILE_URI,同时可以调整照片质量进一步控制文件体积:
navigator.camera.getPicture(onCameraSuccess, onCameraFail, { destinationType: Camera.DestinationType.FILE_URI, quality: 75, // 可根据业务需求调整,数值越低压缩率越高 sourceType: Camera.PictureSourceType.CAMERA // 按需指定相机/相册来源 });
3. 实现转码逻辑
在相机调用成功的回调中,通过文件API读取本地图片转成base64格式:
// 相机调用成功回调 function onCameraSuccess(imageURI) { // 解析本地文件URI window.resolveLocalFileSystemURL(imageURI, (fileEntry) => { fileEntry.file((file) => { const fileReader = new FileReader(); // 读取完成回调,直接拿到base64格式内容 fileReader.onloadend = (e) => { const base64Image = e.target.result; // 此处调用你自己的后端上传逻辑即可 uploadToBackend(base64Image); }; // 按DataURL格式读取文件,自动转成base64 fileReader.readAsDataURL(file); }, (err) => console.log('文件读取失败:', err.code)); }, (err) => console.log('URI解析失败:', err.code)); } function onCameraFail(errMsg) { console.log('相机调用失败:', errMsg); }
注意事项
- 提前做好权限适配:iOS需要在
Info.plist中声明相机、相册访问权限,Android需要在AndroidManifest.xml中声明相机、存储读写权限,避免权限被拒导致流程中断。 - 大尺寸照片可以在转码前先调用图片裁剪、压缩接口处理,降低base64体积,提升上传成功率和加载速度。
内容的提问来源于stack exchange,提问作者dragzz
相关产品推荐
相关产品推荐

