美文网首页
RN-图片选择器(react-native-image-pick

RN-图片选择器(react-native-image-pick

作者: hliccy | 来源:发表于2017-07-14 20:02 被阅读604次

    react-native-image-picker

    支持直接调用摄像头拍摄/从设备相册中选择图片, 原生界面

    1 安装配置

    npm install react-native-image-picker@latest --save
    react-native link
    

    iOS 端

    1 打开XCode项目, 添加 node_modules =>react-native-image-picker =>ios => RNImagePicker.xcodeproj 到 Libraries中
    
    2 添加 RNImagePicker.a 到 Build Phases =》 Link Binary With Libraries
    
    3 添加隐私权限 NSPhotoLibraryUsageDescription/NSCameraUsageDescription/NSMicrophoneUsageDescription
    
    

    Android 端暂未测试

    2 代码效果

    /**
     * Created by licc on 2017/7/9.
     */
    
    import React, {Component } from 'react';
    import {
        StyleSheet,
        View,
        Text,
        Image,
        AlertIOS
    } from 'react-native';
    
    import ImagePicker from 'react-native-image-picker'
    import NavigationBar from './NavigationBar'
    
    
    //图片选择器参数设置
    const options = {
        title: '请选择图片来源',
        cancelButtonTitle:'取消',
        takePhotoButtonTitle:'拍照',
        chooseFromLibraryButtonTitle:'相册图片',
        customButtons: [
            {name: '自定义', title: '自定义图片'},
        ],
        storageOptions: {
            skipBackup: true,
            path: 'images'
        }
    };
    
    export default class ImagePickerExample extends Component {
    
        constructor(props) {
            super(props);
            this.state = {
                avatarSource: null
            };
        }
    
        render(){
    
            return(
                <View style={styles.container}>
                    <NavigationBar
                        title={'图片选择器'}
                        statusBar={{backgroundColor:'blue'}}
                    />
    
                    <Text style={styles.item} onPress={this.doChoose.bind(this)}>选择照片</Text>
                    <Image source={this.state.avatarSource} style={styles.image}/>
                </View>
            );
        }
    
        doChoose(){
    
            ImagePicker.showImagePicker(options,(response)=>{
    
                if(response.didCancel) {
                    console.log('用户取消了选择!');
                } else if (response.error) {
                    alert("ImagePicker发生错误:" + response.error);
                } else if (response.customButton){
                    alert("自定义按钮点击:" + response.customButton)
                } else {
                    let source = {uri:response.uri};
    
                    this.setState({
                        avatarSource:source
                    });
                }
    
            });
        }
    }
    
    
    const styles = StyleSheet.create({
    
        container:{
            flex:1
        },
    
        image:{
            paddingTop:10,
            height:198,
            width:300,
            alignSelf:'center',
        },
    
        item:{
    
            marginTop:10,
            marginLeft:5,
            marginRight:5,
            height:30,
            borderWidth:1,
            padding:6,
            borderColor:'#ddd',
            textAlign:'center'
        },
    });
    
    

    3 直接启动相机或访问相册

    //启动相机拍照
    ImagePicker.launchCamera(options, (response)  => {
        //响应结果处理参考上面样例
    });
     
    //打开系统相册
    ImagePicker.launchImageLibrary(options, (response)  => {
        //响应结果处理参考上面样例
    });
    

    相关文章

      网友评论

          本文标题:RN-图片选择器(react-native-image-pick

          本文链接:https://www.haomeiwen.com/subject/eimohxtx.html