Я пытаюсь разрешить пользователю загружать фотографию, снятую камерой или из фотогалереи, но перед этим предварительно просмотреть ее.
Когда установлены пакеты Camera и ImagePicker. Возвращенный ImageAsset не является обязательным (как если бы любой пакет возвращал фотографию). Кажется, в iOS существует явный конфликт (Android еще не тестировался)
Итак, я делаю фотографию с помощью камеры, а затем привязываю ее к элементу изображения.
После установки пакета ImagePicker. Не имеет значения, если я не импортировал или не использовал ImagePicker, фотография, сделанная камерой, сохраняется в альбом iOS, но не связывается с элементом изображения (то есть не отображается). Также в ImagePicker выбранное изображение не связывается с элементом изображения. Ошибка не выдается.
В родном приложении предварительного просмотра игровой площадки. Если я переключаю изображение, сохраняю и пишу права доступа в последней версии iPhone 7 для iOS. работает отлично.
Попробуйте следующий код с пакетом NativeScript-camera перед установкой nativescript-imagepicker и после:
note: this.itemImage [imageId] (вы можете установить imageId в 0) и просто привязать исходное изображение к элементу image.
import { ItemEventData } from "tns-core-modules/ui/list-view"
import { Component, OnInit } from "@angular/core";
import { Image } from "tns-core-modules/ui/image";
import * as imagepicker from "../nativescript-imagepicker";
import * as camera from "../nativescript-camera";
import { ImageSource, fromFile, fromResource, fromBase64 } from "tns-core-modules/image-source";
import { fromObject, fromObjectRecursive, Observable, PropertyChangeData } from "tns-core-modules/data/observable";
@Component({
selector: "Home",
moduleId: module.id,
templateUrl: "./home.component.html",
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
foodTitle: string = "";
foodDetails: string = "";
public imageTaken;
public saveToGallery: boolean = false;
public keepAspectRatio: boolean = true;
public width: number = 300;
public height: number = 300;
public imageId: number;
public itemImage: Array<ImageSource> = new Array<ImageSource>(7);//string | Image = "https://play.nativescript.org/dist/assets/img/NativeScript_logo.png";
onTakePhoto(imageId) {
//1. Rearrange current photos
//2. Take photo?
//3. Get photo from library?
//4. Adv. get photo from instagram?
//5. Delete photo, and rearrange.
let options = {
width: this.width,
height: this.height,
keepAspectRatio: this.keepAspectRatio,
saveToGallery: this.saveToGallery
};
camera.takePicture().
then((imageAsset) => {
//console.log("Result is an image asset instance");
var image = new Image();
image.src = imageAsset.nativeImage;
this.itemImage[imageId] = image.src; // or imageAsset.nativeImage;
console.log("image path is: " + image);
}).catch((err) => {
console.log("Error -> " + err.message);
});
}
constructor() {
}
ngOnInit(): void {
}
}
Перед установкой пакета nativescript-imagepicker фотография, сделанная с помощью camera.takePhoto, будет отображаться в элементе связанного изображения в приложении предварительного просмотра.
Но потом не будет. Никаких ошибок не будет.