反应本地访问前置摄像头

时间:2019-01-21 11:46:19

标签: react-native

我正在使用“本机照相机”库来访问照相机。所以这是我的代码  。

 import React, { Component } from "react";
 import {
  AppRegistry,
  Dimensions,
  StyleSheet,
  Text,
  TouchableHighlight,
   View
 } from "react-native";
import Camera from "react-native-camera";
import { RNCamera, FaceDetector } from "react-native-camera";

 export default class App extends Component<Props> {
 render() {
   return (
  <View style={styles.container}>
    <Camera
      ref={cam => {
        this.camera = cam;
      }}
      style={styles.preview}
      aspect={Camera.constants.Aspect.fill}
    >
      <Text style={styles.capture} onPress= 
   {this.takePicture.bind(this)}>
        take photo
      </Text>
    </Camera>
  </View>
   );
 }

 takePicture() {
   const options = {};
   //options.location = ...
   this.camera
  .capture({ metadata: options })
  .then(data => console.log(data))
  .catch(err => console.error(err));
  }
  }

const styles = StyleSheet.create({
 container: {
 flex: 1,
 flexDirection: "row"
},
preview: {
  flex: 1,
  justifyContent: "flex-end",
  alignItems: "center"
},
 capture: {
  flex: 0,
  backgroundColor: "#fff",
  borderRadius: 5,
  color: "#000",
  padding: 10,
  margin: 40
  }
});

在这里,我可以使用后置摄像头,每当我单击“拍照”时,它都会捕获图像并立即显示出来。但是我需要在这里进行两个更改。

  1. 使用此代码,可以访问后置摄像头,但我想访问前置摄像头。

  2. 我捕获的图像也不应立即显示。我想要一个按钮,每当我单击该按钮时,它就会导航到不同的页面并在那里显示所有图像。

可以在本机反应吗?如果是,那么请向我建议我需要在此代码中进行的更改

2 个答案:

答案 0 :(得分:1)

要将相机从后置摄像头切换为前置摄像头,请在“摄像头”组件中有一个名为mirrorMode的道具,如果为true,它将显示前置摄像头,否则,它将是默认模式,即前置摄像头:

    <Camera
      ...
      mirrorImage={this.state.mirrorMode}
    >

您可以创建一个状态和一个按钮,以更改状态以在这两个摄像机之间切换。

答案 1 :(得分:1)

要专门回答第二个问题,您有两个选择。

A)拍照后,将其作为base64 uri存储到您的州或redux中,然后在需要时将base64 uri显示为图像。

B)利用软件包react-native-fs访问文件系统,将拍摄的照片作为缓存存储在iOS中,并在需要时进行检索。

根据个人经验,我建议使用选项A