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

Posted

技术标签:

【中文标题】如何将捕获的图像与 react-native-camera 一起使用【英文标题】:How do I use a captured image with react-native-camera 【发布时间】:2015-10-15 17:40:00 【问题描述】:

我可以让react-native-camera 模块访问相机并保存图像。但是,我不知道如何向用户显示此图像。

我正在尝试什么:

我在这里拍照。这会在assets-library://.... 中生成看起来像.jpg 的文件

    _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,然后进行渲染?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

Camera.constants 即将推出。有什么解决办法吗?【参考方案2】:

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

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

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

此处链接库的文档:

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

就这么简单:

您可以在您的 node_modules/react-native/Libraries/CameraRoll

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

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

在“Link Binary With Libraries”中,拖放名为 左侧窗格中的“libRCTCameraRoll.a”-> 库-> RTCCameraRoll.xcodeproj -> 产品

【讨论】:

以上是关于如何将捕获的图像与 react-native-camera 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何查看前置摄像头 ID?捕获的图像也是来自前置摄像头的镜像。

如何使用硬件进行 TDD

如何将相机捕获的图像转换为带有颤振的base64

如何在不将图像保存在本地的情况下将捕获的图像(Surface View)传递给另一个片段?

如何将我捕获的图像保存在图库文件夹或手机内存中?

AVFoundation - 如何在捕获图像之前将 Flash 设置为自动/关闭