【发布时间】:2019-11-27 07:05:10
【问题描述】:
在我的 ionic 4 应用程序中,相机可以正常拍照并上传到远程服务器。我还使用该插件来获取另一个页面上画廊中已经存在的图像,它也可以工作。 我唯一无法解决的是,尽管 saveToPhotoAlbum 设置为 true,但在使用带有相机插件的应用程序时拍摄的照片不会保存在 Photo Reel 或任何其他相册中
这是带有 cameraOptions 的代码部分。我根据平台使用不同的 DestinationTypes
var uri_type;
if (this.platform.is('android')) { uri_type: this.camera.DestinationType.FILE_URI }
if (this.platform.is('ios')) { uri_type: this.camera.DestinationType.NATIVE_URI }
// Testo con un singolo metodo, da provare su iphone se funziona
//uri_type = this.camera.DestinationType.FILE_URI; // Metodo sicuramente ok per android
const options: CameraOptions = {
quality: 100,
destinationType: uri_type,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
saveToPhotoAlbum: true,
}
这是我用来拍摄实际照片并上传到远程文件的代码(如上所述,它工作正常)
this.camera.getPicture(options).then( res => {
// Recuperp il path dal parametro "res"
let path:string = res.toString();
// Estraggo il nome e il percorso del file
var currentName = path.substr(path.lastIndexOf('/') + 1);
var correctPath = path.substr(0, path.lastIndexOf('/') + 1);
if ( CONFIG.DEV == 1) {
let datetime = new Date();
console.log('[objects-dashboard] @ ' + datetime.toISOString() + ' picture path: ');
console.log(path);
}
// Leggo il contenuto in un buffer
//this.file.readAsArrayBuffer(correctPath.toString(), currentName)
//this.file.readAsDataURL(correctPath.toString(), currentName)
this.file.readAsArrayBuffer(correctPath.toString(), currentName)
.then( res => {
// E uso il contenuto per creare un blob con il binario del file
let blob = new Blob([res], {type: "image/jpeg"});
if ( CONFIG.DEV == 1) {
let datetime = new Date();
console.log('[objects-dashboard] @ ' + datetime.toISOString() + 'data blob: ');
console.log(blob);
}
// invoco il metodo per caricare il file
this.uploadFile(blob, currentName)
});
根据 cordova 插件文档,选项 saveToPhotoAlbum 应该使用 Android 和 iOS 的默认相册自动将照片保存到手机的照片库中。但是什么也没发生。
不知道该信息是否有用,但这是相关插件的列表:
- cordova-plugin-camera 4.0.3“相机”
- cordova-plugin-device 2.0.2“设备”
- cordova-plugin-file 6.0.1“文件”
- cordova-plugin-file-transfer 1.7.1“文件传输”
提前感谢您的提醒
【问题讨论】:
-
尝试更改目的地类型:destinationType:Camera.DestinationType.FILE_URI
-
另一种解决方案是使用这个插件来保存img:cordova-plugin-save-image
-
如果原来的插件有办法正常工作,我想避免使用另一个插件。目前我已经能够在 android 版本中找到该文件,所以 .FILE_URI 似乎可以工作。我将尝试强制对 iOS 使用 FILE_URI。谢谢。
-
到目前为止,还没有运气。 FILE_URI 对 iOS 不起作用。我尝试安装 Ionic 本机照片库插件,但是一旦我加载模块,页面就会变为空白,不显示任何内容。
private library: PhotoLibrary是导致页面变为空白的原因。 -
你的离子版本是什么?
标签: angular cordova cordova-plugins ionic-native cordova-plugin-camera