Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework 相机预览拍摄功能不工作?_Ionic Framework_Cordova Plugins_Ionic3 - Fatal编程技术网

Ionic framework 相机预览拍摄功能不工作?

Ionic framework 相机预览拍摄功能不工作?,ionic-framework,cordova-plugins,ionic3,Ionic Framework,Cordova Plugins,Ionic3,我正在尝试让takePicture函数工作并获取图像数据,但到目前为止运气不佳。我已经尝试了新的Beta插件相机预览,但那根本不会启动相机 我有插件com.mbppower.camerapreview和npm安装--save@ionic native/camera preview 我只需要从照片中获取图像数据,但不知道如何获取 代码如下: import { Component, NgZone } from '@angular/core'; import { NavController, Toas

我正在尝试让takePicture函数工作并获取图像数据,但到目前为止运气不佳。我已经尝试了新的Beta插件相机预览,但那根本不会启动相机

我有插件com.mbppower.camerapreview和npm安装--save@ionic native/camera preview

我只需要从照片中获取图像数据,但不知道如何获取

代码如下:

import { Component, NgZone } from '@angular/core';
import { NavController, ToastController } from 'ionic-angular';


import firebase from 'firebase';
import { CameraPreview, CameraPreviewRect } from 'ionic-native';
import { Diagnostic } from 'ionic-native';
import { File } from 'ionic-native';


import { AlertProvider } from '../../providers/alertprovider';
import { ImageProvider } from '../../providers/imageprovider';

declare var cordova: any; // global variable for paths
 @Component({
  selector: 'page-upload',
  templateUrl: 'upload.html'
})

export class UploadPage {
  public user: any;

  constructor(private nav: NavController, private zone:NgZone, private 
  cameraPreview: CameraPreview, public diagnostic: Diagnostic, public 
  toastCtrl: ToastController,
  public imageProvider: ImageProvider, public alertProvider: AlertProvider){

}

ionViewDidEnter(){

    this.checkPermissions();
}

ionViewWillLeave() {

    CameraPreview.stopCamera();
}

checkPermissions() {

    Diagnostic.isCameraAuthorized().then((authorized) => {
        if(authorized)
            this.initializePreview();
        else {
            Diagnostic.requestCameraAuthorization().then((status) => {
                if(status == Diagnostic.permissionStatus.GRANTED)
                    this.initializePreview();
                else {
                    // Permissions not granted
                    // Therefore, create and present toast
                    this.toastCtrl.create(
                        {
                            message: "Cannot access camera", 
                            position: "bottom",
                            duration: 5000
                        }
                    ).present();
                }
            });
        }
    });
}   

initializePreview() {
    // Make the width and height of the preview equal 
    // to the width and height of the app's window
    let previewRect: CameraPreviewRect = {
    x: 0,
    y: 57,
    width: window.innerWidth,
    height: window.innerHeight/2
    };

    // More code goes here
    // Start preview
    CameraPreview.startCamera(
        previewRect, 
        'rear', 
        true, 
        true, 
        false,
        1
    );

    CameraPreview.setOnPictureTakenHandler().subscribe((imageData) => {
        // Process the returned imageURI.
        let imgBlob = this.imageProvider.imgURItoBlob("data:image/jpeg;base64," + imageData);
        let metadata = {
            'contentType': imgBlob.type
        };

        firebase.storage().ref().child('images/' + this.user.userId + '/cards' + '/' + this.imageProvider.generateFilename()).put(imgBlob, metadata).then((snapshot) => {
            // URL of the uploaded image!
            let url = snapshot.metadata.downloadURLs[0];

        }).catch((error) => {
            this.alertProvider.showErrorMessage('image/error-image-upload');
        });


    });
}

takePicture() {

    CameraPreview.takePicture({maxWidth: 1280, maxHeight: 1280});

}


}
Cordova CLI:6.5.0

爱奥尼亚框架版本:3.0.1

IONAL CLI版本:2.2.3

爱奥尼亚应用程序库版本:2.2.1

爱奥尼亚应用程序脚本版本:1.3.0

ios部署版本:未安装

ios sim卡版本:未安装

操作系统:Windows 10

节点版本:v6.10.0

Xcode版本:未安装,而不是此版本

 // More code goes here
// Start preview
CameraPreview.startCamera(
    previewRect, 
    'rear', 
    true, 
    true, 
    false,
    1
)
使用此“使背景为假”将使相机预览显示在前面

 // More code goes here
// Start preview
CameraPreview.startCamera(
    previewRect, 
    'rear', 
    false, 
    true, 
    false,
    1
)
如果这不能解决您的问题,请删除该摄像头插件并使用此最新插件

ionic plugin add https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview.git

这有npm上尚未提供的新修复程序。

您检查了日志吗?没有,问题是如果我编写以下代码,就会出现错误:CameraPreview.takePicture(函数(base64PictureData){/*这里的代码*/});你会遇到哪一个错误?如果你使用的是ionic native 3,你需要使用你注入的对象,而不是类。你能再解释一下吗?我是爱奥尼亚的新手,什么都试过了。