1. 安装依赖
| npm install react-native-image-picker |
或
| yarn add react-native-image-picker |
react-native-image-picker Github地址
2. Android/ios额外配置
在使用前需要进行一些配置,并且引入相应权限。
额外配置见 -> https://github.com/react-native-image-picker/react-native-image-picker?tab=readme-ov-file#new-architecture
3. 引入使用
| import {launchCamera, launchImageLibrary} from 'react-native-image-picker'; |
| const options = { |
| mediaType: 'photo', |
| includeBase64: false, |
| saveToPhotos: true, |
| maxHeight: 2000, |
| maxWidth: 2000, |
| }; |
| launchCamera(options, response => { |
| if (response.didCancel) { |
| console.log('取消选择'); |
| } else if (response.error) { |
| console.log('出错: ', response.error); |
| } else { |
| let imageUri = response.uri || response.assets?.[0]?.uri; |
| let imageInfo = response.assets?.[0]; |
| console.log(response); |
| } |
| }); |
- launchImageLibrary() -从相册选择
| const options = { |
| mediaType: 'photo', |
| includeBase64: false, |
| saveToPhotos: true, |
| maxHeight: 2000, |
| maxWidth: 2000, |
| }; |
| launchImageLibrary(options, response => { |
| if (response.didCancel) { |
| console.log('取消选择'); |
| } else if (response.error) { |
| console.log('选择出错: ', response.error); |
| } else { |
| let imageUri = response.uri || response.assets?.[0]?.uri; |
| let imageInfo = response.assets?.[0]; |
| console.log(response); |
| } |
| }); |
其它options详细字段可参考文档 https://github.com/react-native-image-picker/react-native-image-picker?tab=readme-ov-file#options
4. 完整示例
点击查看代码
| import React from 'react'; |
| import {Button, View, Alert} from 'react-native'; |
| import {launchCamera, launchImageLibrary} from 'react-native-image-picker'; |
| |
| const App = () => { |
| const options = { |
| mediaType: 'photo', |
| includeBase64: false, |
| saveToPhotos: true, |
| }; |
| |
| const openCamera = () => { |
| launchCamera(options, (response) => { |
| if (response.didCancel) { |
| console.log('User cancelled image picker'); |
| } else if (response.errorCode) { |
| console.log('ImagePicker Error: ', response.errorMessage); |
| } else { |
| console.log('Image URI: ', response.assets[0].uri); |
| } |
| }); |
| }; |
| |
| const openGallery = () => { |
| launchImageLibrary(options, (response) => { |
| if (response.didCancel) { |
| console.log('User cancelled image picker'); |
| } else if (response.errorCode) { |
| console.log('ImagePicker Error: ', response.errorMessage); |
| } else { |
| console.log('Image URI: ', response.assets[0].uri); |
| } |
| }); |
| }; |
| |
| const showPickerOptions = () => { |
| Alert.alert( |
| 'Select Image', |
| 'Choose from below options', |
| [ |
| {text: 'Camera', onPress: openCamera}, |
| {text: 'Gallery', onPress: openGallery}, |
| {text: 'Cancel', style: 'cancel'}, |
| ], |
| {cancelable: true}, |
| ); |
| }; |
| |
| return ( |
| <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}> |
| <Button title="Select Image" onPress={showPickerOptions} /> |
| </View> |
| ); |
| }; |
| |
| export default App; |
可以搭配 react-native-permissions 手动控制权限获取。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程