Expo.launchCameraAsync自定义图像视图?

时间:2018-08-22 16:05:10

标签: react-native expo

我正在为我的应用创建相机功能,以便用户拍摄照片后,他们可以重新缩放并在边框周围移动。 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中?该文档似乎没有提供解决方案。

2 个答案:

答案 0 :(得分:1)

我认为这种组合是不可能的。

ImagePicker.launchCameraAsync({ allowsEditing: true, aspect: [4,3] })正在调用完整的封装的expo组件。

如果要创建自定义视图,则必须自己处理所有状态和视频/照片操作。

答案 1 :(得分:1)

在拍照后尝试启动ImageManipulator。调用takePictureAsync之后,等待promise解析,然后您将获得图像的本地uri,并将其传递给ImageManipulator。