uploadImage(filePath: string, camera: boolean = false) {
try {
let options: CameraOptions;
if (camera) {
options = {
quality: 40,
destinationType: this._camera.DestinationType.DATA_URL,
encodingType: this._camera.EncodingType.JPEG,
mediaType: this._camera.MediaType.PICTURE,
correctOrientation: true
}
} else {
options = {
destinationType: this._camera.DestinationType.DATA_URL,
sourceType: this._camera.PictureSourceType.PHOTOLIBRARY,
encodingType: this._camera.EncodingType.JPEG,
mediaType: this._camera.MediaType.PICTURE
}
}
this._camera.getPicture(options).then((imageData) => {
const photo = `data:image/jpeg;base64,${imageData}`;
const fileRef = this._afs.ref(filePath);
const task = fileRef.putString(photo, 'data_url');
task.snapshotChanges().pipe(
finalize(() => {
// execute other actions
fileRef.getDownloadURL().subscribe(url => {
if (url) {
this.fileUploadUrl.next(url);
}
})
let toast = this.toastCtrl.create({
message: 'Image upload successfully',
position: 'bottom',
duration: 3000
});
toast.present();
})
).subscribe();
})
} catch (e) {
console.error(e);
let toast = this.toastCtrl.create({
message: 'Image upload cancelled',
position: 'bottom',
duration: 3000
});
toast.present();
}
}
После снятой фотографии (с реального устройства iOS) иногда она вылетает, иногда работает нормально. Если я использую фронтальную камеру, она всегда работает.
Но если я использую заднюю камеру, после выбранной картинки мигает белый экран и затем приложение перезагружается. Я подозреваю, что это как-то связано с размером изображения или разрешением. Иногда, если я делаю снимок с очень низким разрешением задней камерой (как в условиях слабого освещения), он загружается просто отлично. Я немного исследовал онлайн, некоторые люди предлагают запускать приложение в производственном режиме с флагом --prod
, но это не решает проблему.
Я также попытался снизить значение качества до более низкого значения, но это не работает с задней камерой.
Я почти уверен, что плагин добавлен правильно и настройки конфиденциальности также верны, иначе он не позволит мне делать снимки.