我正在使用cordova-plugin-camera-preview拍摄照片,并使用cordova-base64-to-gallery将base64字符串保存为图片。
问题是它不会将我的base64Image保存为图像。
我现在正在做什么:拍照后,我称之为:
this.base64ToGallery.base64ToGallery(this.base64Image).then(
res => this.toast.show('P -> Saved to gallery: ' + res, '5000', 'center').subscribe(),
err => this.toast.show('P -> Error saving to gallery: ' + err , '7000', 'center').subscribe()
);
其中this.base64Image = 'data:image/png;base64,' + imageData;
错误为:Error while saving image
如果我将this.base64Image
更改为this.base64Image = imageData;
我收到以下错误消息:data.replace is not a function
,
data.replace是cordova-base64-to-gallery插件中base64ToGallery.js的一部分。
我可以使用以下方式将图片正确显示为预览:
<img class="image-container" src="{{base64Image}}" />
非常感谢任何帮助
答案 0 :(得分:2)
要解决此问题,我需要添加权限以写入具有代码以保存图像的页面中的存储。 就我而言,我将以下代码放在构造函数中:
this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE).then(
result => console.log("Permissions granted", result.hasPermissions),
error => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE)
);
this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.WRITE_EXTERNAL_STORAGE]);
答案 1 :(得分:0)
我正在使用cordova-plugin-camera-preview拍摄照片,并使用cordova-base64-to-gallery将base64字符串保存为图片。
问题是它不会将我的base64Image保存为图像。
我正在做什么: this.picture ='data:image / jpeg; base64,'+ imageData;
替换此: this.picture ='data:image / png; base64'+ imageData;