如何使用react-native-camera捕获的图像

时间:2015-10-15 17:40:01

标签: reactjs react-native react-native-camera

我可以让react-native-camera模块访问相机并保存图像。但是,我无法弄清楚如何向用户显示此图像。

我正在尝试:

我在这里拍照。这会在.jpg

中生成看似assets-library://....文件的内容
    _takePicture() {
        var self = this;
        this.refs.cam.capture(function(err, data) {
          this.setState({photo: data});
          console.log(err, data);
          // data is "assets-library://asset/asset.JPG?id=########-####-####-####-##########&ext=JPG"
          console.log('just took a picture');
        }); 
    }

但是,如果我尝试渲染图像:

    render: function() {
      return(
         <Image style={styles.image} source={{uri: this.state.photo}}/>
      );
    }

我收到此错误:

No suitable image URL loader found for assets-library://asset/asset.JPG?id=.......

如何拍照,将其保存到我的应用程序的当前state并进行渲染?

2 个答案:

答案 0 :(得分:26)

解决方案是启用save to disk option与保存到cameraRoll选项:

<Camera
  captureTarget={Camera.constants.CaptureTarget.disk}
  // Rest of Camera options here
/>

答案 1 :(得分:1)

所以,我在一段时间内使用了@YPCrumble答案。

但现在我必须将图像保存在相机胶卷中。

如果有人想继续保存相机胶卷,您必须手动链接RTCCameraRoll库。

此处链接库的文档:

https://facebook.github.io/react-native/docs/linking-libraries-ios.html#manual-linking

这很简单:

  

您可以在自己的网站上找到RCTImage.xcodeproj   node_modules /反应天然/库/ CameraRoll

     

将此文件拖放到XCode项目的Libraries文件夹中。

     

之后,单击主项目,然后在右侧窗格中找到   “建立阶段”。

     

在“Link Binary With Libraries”中,拖放调用的文件   左侧窗格中的“libRCTCameraRoll.a” - &gt;图书馆 - &gt;   RTCCameraRoll.xcodeproj - &gt;产品