使用 react-native-camera,如何访问保存的图片?

Posted

技术标签:

【中文标题】使用 react-native-camera,如何访问保存的图片?【英文标题】:Using react-native-camera, how to access saved pictures? 【发布时间】:2017-01-28 23:17:05 【问题描述】:

我的目标是使用 react-native-camera 并简单地在同一屏幕上显示图片(如果已拍摄照片)。我正在尝试将图片源保存为“imageURI”。如果它存在,我想显示它,如果还没有拍照,只显示文本说No Image Yet。我已经让相机工作了,因为我可以跟踪应用程序正在将图片保存到磁盘。遇到以下问题:

如何在我拍照时将捕获函数数据分配给一个变量,以便我稍后调用 (imageURI)。

不知道如何在 javascript 中使用 if 语句来检查变量是否存在。

import Camera from 'react-native-camera';

export default class camerahere extends Component 

_takePicture () 
  this.camera.capture((err, data) => 
  if (err) return;
  imageURI = data;
  );


render() 

  if ( typeof imageURI == undefined) 
    image = <Text> No Image Yet </Text> 
   else 
    image = <Image source=uri: imageURI, isStatic:true 
    style=width: 100, height: 100 />
  


return (
  <View style=styles.container>
    <Camera
      captureTarget=Camera.constants.CaptureTarget.disk
      ref=(cam) => 
        this.camera = cam;
      
      style=styles.preview
      aspect=Camera.constants.Aspect.fill>

      button
    <TouchableHighlight onPress=this._takePicture.bind(this)>
      <View style=height:50,width:50,backgroundColor:"pink"></View>
</TouchableHighlight>
</Camera>

【问题讨论】:

【参考方案1】:

我找到了自己问题的答案。这是使用 react-native-camera 的示例。https://github.com/spencercarli/react-native-snapchat-clone/blob/master/app/routes/Camera.js

在@vinayr 回答的另一个较早发布的问题中找到了这个答案。谢谢! Get recently clicked image from camera on image view in react-native

这是第一个链接的代码:

import React,  Component  from 'react';
import 
  View,
  StyleSheet,
  Dimensions,
  TouchableHighlight,
  Image,
  Text,
 from 'react-native';
import Camera from 'react-native-camera';

const styles = StyleSheet.create(
  container: 
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: '#000',
  ,
  preview: 
    flex: 1,
    justifyContent: 'flex-end',
    alignItems: 'center',
    height: Dimensions.get('window').height,
    width: Dimensions.get('window').width
  ,
  capture: 
    width: 70,
    height: 70,
    borderRadius: 35,
    borderWidth: 5,
    borderColor: '#FFF',
    marginBottom: 15,
  ,
  cancel: 
    position: 'absolute',
    right: 20,
    top: 20,
    backgroundColor: 'transparent',
    color: '#FFF',
    fontWeight: '600',
    fontSize: 17,
  
);

class CameraRoute extends Component 
  constructor(props) 
    super(props);

    this.state = 
      path: null,
    ;
  

  takePicture() 
    this.camera.capture()
      .then((data) => 
        console.log(data);
        this.setState( path: data.path )
      )
      .catch(err => console.error(err));
  

  renderCamera() 
    return (
      <Camera
        ref=(cam) => 
          this.camera = cam;
        
        style=styles.preview
        aspect=Camera.constants.Aspect.fill
        captureTarget=Camera.constants.CaptureTarget.disk
      >
        <TouchableHighlight
          style=styles.capture
          onPress=this.takePicture.bind(this)
          underlayColor="rgba(255, 255, 255, 0.5)"
        >
          <View />
        </TouchableHighlight>
      </Camera>
    );
  

  renderImage() 
    return (
      <View>
        <Image
          source= uri: this.state.path 
          style=styles.preview
        />
        <Text
          style=styles.cancel
          onPress=() => this.setState( path: null )
        >Cancel
        </Text>
      </View>
    );
  

  render() 
    return (
      <View style=styles.container>
        this.state.path ? this.renderImage() : this.renderCamera()
      </View>
    );
  
;

export default CameraRoute;

【讨论】:

@Arsalan .. 嗨,我认为这个答案已经过时了。你有更新吗?

以上是关于使用 react-native-camera,如何访问保存的图片?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 react-native-camera 录制视频

如何使用 react-native-camera 人脸检测器检测人脸?

使用 react-native-camera,如何访问保存的图片?

如何将捕获的图像与 react-native-camera 一起使用

如何使用 react-native-camera 从相机胶卷 url 显示图像?

如何使用带有 react-native-camera 的默认 iOS 相机控件