`react-native-camera` 返回 data.uri 但无法访问图像(没有这样的文件或目录)
Posted
技术标签:
【中文标题】`react-native-camera` 返回 data.uri 但无法访问图像(没有这样的文件或目录)【英文标题】:`react-native-camera` returns a data.uri but image cannot be accessed (no such file or directory) 【发布时间】:2018-10-17 05:40:13 【问题描述】:我将不胜感激这方面的任何帮助。
我正在使用 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 保存文件,我会得到“没有这样的文件或目录”。
我已经在模拟器和物理设备上进行了测试——同样的问题。
好像和WRITE_EXTERNAL_STORAGE
权限无关,因为我授予权限后,出现ENOENT
错误。
我在手机上查看了应用程序的缓存,没有这些文件,是不是没有写呢?如果 RNCamera 有问题,我会认为 URI 不会成功返回。
"react-native": "0.57.1",
"react-native-camera": "^1.3.0",
任何帮助将不胜感激!
【问题讨论】:
试试不带“file:///”的uri @Kranthi 试过了,没有帮助。我还尝试了不带扩展名的“.jpg”。 【参考方案1】:我遇到了同样的问题并最终使用了这个CameraRoll.saveToCameraRoll(data.uri)
。
【讨论】:
谢谢,会试一试告诉你。 我很想知道是否有人想出了解决此问题的方法,而无需保存到相机胶卷。如果可能的话,我想避免填满用户的相机胶卷。 @MurphyRandle 你得到什么了吗? @JustABeginner 我希望我记得!但我认为我能够使用 expo-camera(因为我使用的是 Expo),获取他们在拍照后返回的临时 URI,使用文件 API 将图像复制到永久位置,然后我就可以走了.【参考方案2】:您应该删除文件的任何 file://
前缀,例如:
const uri = data.uri.startsWith('file://')
? data.uri.substr('file://'.length)
: data.uri;
【讨论】:
得到错误:错误:找不到源文件。在 fs.js:283以上是关于`react-native-camera` 返回 data.uri 但无法访问图像(没有这样的文件或目录)的主要内容,如果未能解决你的问题,请参考以下文章
react-native-camera (android): takePictureAsync() 抛出错误
[RN] React Native 使用 react-native-camera 过程中报错 Found react-native-camera 'mlkit' but wasn
在应用关闭的情况下使用“react-native-camera”