Ошибка Nativescript в камере и плагине ImagePicker - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь разрешить пользователю загружать фотографию, снятую камерой или из фотогалереи, но перед этим предварительно просмотреть ее. Когда установлены пакеты 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, будет отображаться в элементе связанного изображения в приложении предварительного просмотра. Но потом не будет. Никаких ошибок не будет.

...