Я могу получить модуль 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
моего приложения и сделать его?
Решение заключалось в том, чтобы включить параметр сохранить на диск по сравнению с опцией save to cameraRoll:
<Camera
captureTarget={Camera.constants.CaptureTarget.disk}
// Rest of Camera options here
/>
Итак, я использовал ответ @YPCrumble в течение некоторого времени.
Но теперь мне нужно сохранить изображение в рулоне камеры.
Если кто-то хочет продолжить сохранение в кадре камеры, вам необходимо вручную связать библиотеку RTCCameraRoll.
Документация для ссылки на библиотеку здесь:
https://facebook.github.io/react-native/docs/linking-libraries-ios.html#manual-linking
Это так просто:
Вы можете найти RCTImage.xcodeproj в своем node_modules/реагировать родной/Библиотеки/CameraRoll
Перетащите этот файл в папку "Библиотеки" в проекте XCode.
После этого щелкните в своем основном проекте и найдите в правой панели "Сформировать фазы".
Внутри "Link Binary With Libraries" перетащите файл под названием "libRCTCameraRoll.a" из левой панели → Библиотеки → RTCCameraRoll.xcodeproj → Продукты