React Native Camera:拍照后,如何将其保存在应用程序本身而不是保存在图库中?

Posted

技术标签:

【中文标题】React Native Camera:拍照后,如何将其保存在应用程序本身而不是保存在图库中?【英文标题】:React Native Camera: After taking a picture, How to save it inside the app itself instead of saving it in gallery? 【发布时间】:2018-05-04 12:20:24 【问题描述】:

这个问题与我在我的一个项目中使用的react-native-camera 库有关。

<RNCamera
   ref=ref => 
      this.camera = ref;
   
   style = styles.preview
   type=RNCamera.Constants.Type.back
   flashMode=RNCamera.Constants.FlashMode.on
   permissionDialogTitle='Permission to use camera'
   permissionDialogMessage='We need your permission to use your camera phone'
/>

以上代码将图像保存在图库中。我们如何将它保存在 app 文件夹或其他一些私有文件夹中,而不是显示在设备库中?

【问题讨论】:

你应该看看takePicture = async function(),这个功能可以让你完全控制拍摄的照片github.com/react-native-community/react-native-camera/blob/… @Hackerman 感谢您的回复。但我找不到一个选项可以让您选择目标路径或将其保存在画廊以外的其他位置。 查看函数,takePicture = async function() 返回一个data.uri...使用其他库,如react-native-fs,您可以将文件移动到您想要的任何位置 @Hackerman 再次感谢。将尝试 react-native-fs。但我相信 react-native-camera 可能有一个选项来执行所需的操作。 【参考方案1】:

您可以通过CameraRoll 进行此操作

CameraRoll.saveToCameraRoll(tag, [type]);

将照片或视频保存到相机胶卷或照片库。

android 上,标签必须是本地图片或视频 URI,例如“file:///sdcard/img.png”。

ios 上,标签可以是任何图像 URI(包括本地、远程资产库和 base64 数据 URI)或本地视频文件 URI(目前不支持远程或数据 URI 来保存视频)。

如果标签的文件扩展名为 .mov 或 .mp4,则会被推断为视频。否则将被视为照片。要覆盖自动选择,您可以传递一个可选类型参数,该参数必须是“照片”或“视频”之一。

返回一个将使用新 URI 解析的 Promise。

【讨论】:

我的问题是如何不将图像保存到默认的相机滚动路径。我不希望用户在他们的图库中看到应用图像。我猜你的答案可能无效。【参考方案2】:

根据 react native docs,你应该试试这个......

CameraRoll.getPhotos(
   first: 20,
   assetType: 'Photos',
)
.then(r => 
   this.setState( photos: r.edges );
)
.catch((err) => 
  //Error Loading Images
);

CameraRoll documentation

【讨论】:

你能解释一下这段代码的作用吗?我的问题是如何将图像存储在 iPhone 上的相机胶卷以外的不同位置?我可能错了,但我没有看到这个回答我的问题。

以上是关于React Native Camera:拍照后,如何将其保存在应用程序本身而不是保存在图库中?的主要内容,如果未能解决你的问题,请参考以下文章

React Native开发之expo中camera的基本使用

react-native-camera 对原生 android 的反应很慢

React Native - 使用库 react-native-camera 调用摄像头扫描二维码以及条形码

拍照时 React-native iOS 应用程序崩溃

React-native-camera 不想保存图像

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