我正在为我的应用创建相机功能,以便用户拍摄照片后,他们可以重新缩放并在边框周围移动。 Expo
的API可以满足我的要求:
ImagePicker.launchCameraAsync({ allowsEditing: true, aspect: [4,3] })
但是我也希望相机屏幕本身是全屏的,所以顶部和底部没有黑条,我在这里有视图:
import { ImagePicker, Camera, Permissions, FileSystem } from 'expo';
<View style={{ flex: 1 }}>
<Camera
style = {{ flex: 1 }}
type = {this.state.type}
ref = {ref => { this.camera = ref }}
>
<View style={camera.container}>
<TouchableOpacity
style = {this.state.css.touchable}
onPress={this.onTap}
/>
<Button transparent
onPress = {this.onSnapShot}
style = {[camera.buttonContainer, this.state.css.button]}
>
<Entypo
name = 'circle'
size = {fonts.camera}
color = {colors.wineWhite}
/>
</Button>
</View>
</Camera>
</View>
细节并不重要,关键是我可以创建一个Camera
视图。现在的问题是,有没有一种方法可以将此摄像机视图传递到launchCameraAsync
中?该文档似乎没有提供解决方案。
答案 0 :(得分:1)
我认为这种组合是不可能的。
ImagePicker.launchCameraAsync({ allowsEditing: true, aspect: [4,3] })
正在调用完整的封装的expo组件。
如果要创建自定义视图,则必须自己处理所有状态和视频/照片操作。
答案 1 :(得分:1)
在拍照后尝试启动ImageManipulator。调用takePictureAsync之后,等待promise解析,然后您将获得图像的本地uri,并将其传递给ImageManipulator。