`react-native-camera`返回data.uri,但无法访问图像(无此文件或目录)

时间:2018-10-17 05:40:14

标签: android react-native react-native-camera

在此方面,我将不胜感激。 我正在使用 react-native-camera ,当我获得使用takePictureAsync()方法拍摄的图像的URI时,无法访问该图像。

我拍摄了照片并导航到下一个屏幕,将图像数据作为参数传递:

  const data = await this.camera.takePictureAsync(options);
  console.log(data);
  this.props.navigation.navigate('FFV', {
    postItem: data.uri
  });

在下一个屏幕(FFV)中,我将照片加载到<Image/>中,如果我通过图像的 base64 ,则可以使用,但是如果我通过了图像,则无法使用 URI

<Image style={styles.imagePreview}
          source={{ isStatic:true, uri: postItem }}
          resizeMode="contain"
 />

该图像无法渲染,如果我尝试使用CameraRoll保存文件,则会显示“无此文件或目录”。

First the image data is printed out, second is the error accessing the file

我已经在模拟器和物理设备上进行了测试-同样的问题。 它似乎与WRITE_EXTERNAL_STORAGE权限无关,因为在我授予权限后,会发生ENOENT错误。

我检查了手机上应用程序的缓存,但其中没有那些文件,这是否意味着它没有编写?如果RNCamera出现问题,我认为URI不会成功返回。

"react-native": "0.57.1",
"react-native-camera": "^1.3.0",

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,最终使用了CameraRoll.saveToCameraRoll(data.uri)

答案 1 :(得分:1)

您应该删除文件的任何file://前缀,例如:

    const uri = data.uri.startsWith('file://')
              ? data.uri.substr('file://'.length)
              : data.uri;