访问相册react-native-image-picker

如果想实现点击按钮访问相册,并让图片显示在应用中我们可以使用react-native-image-picker

 首先 

npm i react-native-image-picker@5.3.1

Android配置环境:

路径:android/app/src/main/AndroidManifest.xml

添加以下代码:

<!-- 访问相册 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

找到android/settings.gradle

添加以下代码:

/* 访问相册 */
include ':react-native-image-picker'
project(':react-native-image-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-picker/android')

IOS

cd ios && pod install && cd ..

使用示例:

import { View, Text ,SafeAreaView,Button,Image} from 'react-native'
import React,{useState} from 'react'
import {launchImageLibrary} from 'react-native-image-picker';

export default function App() {
const [imgList, setimgList] = useState([])
  const handleClick= async()=>{
    launchImageLibrary(
      {
        mediaType: 'photo',
        selectionLimit: 6,
        includeBase64: true,
        maxWidth: 1000,
        maxHeight: 1000,
      },
      async res => {
        const curFiles = res.assets;
        let result
        for(var i = 0; i < curFiles.length; i++){
          console.log(curFiles[i]);
          result=curFiles[i]
          await setimgList([...imgList,curFiles[i]])
        }   
      }
      )
  }
  return (
    <SafeAreaView>
      <Button title='点击选择图片' onPress={handleClick}/>
     {
      imgList.map(item=>{
       return(
        <Image
        key={item.url}
        style={{width:200, height:200}}
         source={{uri:item.uri}}/>
       )
      })
     }
    </SafeAreaView>
  )
}

感谢浏览!欢迎点赞 

React Native 中的 ImagePicker 组件获取到的图片是以 URI 的形式返回的,而不是公共路径。如果您需要将图片保存到公共路径中,可以使用 `react-native-fs` 这个第三方库,用于读取和写入文件系统。 以下是一个简单的示例,演示如何将 ImagePicker 返回的图片保存到公共路径中: ```javascript import React, { useState } from 'react'; import { Button, Image, View } from 'react-native'; import ImagePicker from 'react-native-image-picker'; import RNFS from 'react-native-fs'; const App = () => { const [image, setImage] = useState(null); const handleChoosePhoto = () => { const options = { mediaType: 'photo', quality: 1, }; ImagePicker.launchImageLibrary(options, response => { if (response.uri) { const folderPath = RNFS.DownloadDirectoryPath; const fileName = 'myImage.jpg'; const filePath = `${folderPath}/${fileName}`; RNFS.copyFile(response.uri, filePath).then(() => { setImage(filePath); }); } }); }; return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> {image && ( <Image source={{ uri: `file://${image}` }} style={{ width: 200, height: 200 }} /> )} <Button title="Choose Photo" onPress={handleChoosePhoto} /> </View> ); }; export default App; ``` 在上面的示例中,我们使用 `react-native-fs` 中的 `copyFile` 方法将 ImagePicker 返回的图片复制到公共路径中,并将公共路径作为 state 更新。最后,我们使用 `file://` 协议将图片加载到 Image 组件中。 希望这能帮到您!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值