RN-第三方-react-native-camera,調(diào)用相機拍攝圖片

本文內(nèi)容

自定義相機拍照,上傳圖片

react-native-image-picker這個同樣可以實現(xiàn)相機拍照,但是是調(diào)用的系統(tǒng)的相機,相對于自定義較為簡單,功能很強大。

react-native-camera這個可以實現(xiàn)自定義相機的界面效果

react-native-camera 使用

render() {
        return (
            <View style={styles.container}>
                <Camera
                    ref={(cam) => {
                        this.camera = cam;
                    }}
                    // Camera.constants.CaptureTarget.cameraRoll (default), 相冊
                    // Camera.constants.CaptureTarget.disk, 本地
                    // Camera.constants.CaptureTarget.temp  緩存
                    // 很重要的一個屬性,最好不要使用默認的,使用disk或者temp,
                    // 如果使用了cameraRoll,則返回的path路徑為相冊路徑,圖片沒辦法顯示到界面上
                    captureTarget={Camera.constants.CaptureTarget.temp}
                    mirrorImage={false}
                    //"high" (default),"medium",  "low",  "photo", "1080p",  "720p",  "480p".
                    captureQuality="medium"
                    style={styles.preview}
                    aspect={Camera.constants.Aspect.fill}
                >

                    <Text style={styles.capture} onPress={this.takePicture.bind(this)}>[點擊拍照]</Text>

                    /*拍照完畢,顯示圖片到界面上*/
                    <Image style={{width: 100, height: 100, marginBottom: 20}} source={{uri: this.state.imagePath}}>

                    </Image>
                </Camera>

            </View>
        );
    }

    /*
    * 點擊拍照
    * */
    takePicture() {
        //jpegQuality 1-100, 壓縮圖片
        const options = {jpegQuality: 50};

        this.camera.capture({options})

            .then((data) =>{
                console.log(data);

                /*圖片本地路徑*/
                this.setState({
                    imagePath: data.path,
                });

                /*獲取圖片大小*/
                Image.getSize(data.path,(width,height) =>{
                    console.log(width,height);
                });

            })
            .catch(err => console.error(err));

    }


const styles = StyleSheet.create({
    container: {
        flex: 1,
        flexDirection: 'row',
    },
    preview: {
        flex: 1,
        justifyContent: 'flex-end',
        alignItems: 'center'
    },
    capture: {
        flex: 0,
        backgroundColor: '#fff',
        borderRadius: 5,
        color: '#000',
        padding: 10,
        margin: 40
    }
});

這樣,得到圖片的路徑,就可以上傳圖片了,上傳的代碼參考上上一篇文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容