19

我可以获得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我的应用程序的当前位置并进行渲染?

4

2 回答 2

26

解决方案是启用保存到磁盘选项与保存到 cameraRoll 选项:

<Camera
  captureTarget={Camera.constants.CaptureTarget.disk}
  // Rest of Camera options here
/>
于 2015-10-15T18:31:03.007 回答
1

所以,我使用@YPCrumble 的答案已经有一段时间了。

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

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

此处链接库的文档:

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

很简单:

您可以在 node_modules/react-native/Libraries/CameraRoll 中找到 RCTImage.xcodeproj

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

之后,单击您的主项目,然后在右侧窗格中找到“Build Phases”。

在“Link Binary With Libraries”中,从左侧窗格 -> Libraries -> RTCCameraRoll.xcodeproj -> Products 拖放名为“libRCTCameraRoll.a”的文件

于 2017-09-19T00:00:27.937 回答