ReactNative中实现图片保存到手机相册

在 Expo 中,要将图片保存到手机相册,你可以使用 Expo 的 `MediaLibrary` 模块来实现。以下是保存图片到相册的基本步骤:

步骤概览:

  1. **导入所需模块**:ImagePicker

import * as ImagePicker from 'expo-image-picker';

import * as MediaLibrary from 'expo-media-library';

  1. **获取图片**:

使用 `ImagePicker` 模块从相册或摄像头中获取图片。

  1. **保存图片到相册**:

使用 `MediaLibrary.saveToLibraryAsync()` 将获取到的图片保存到手机相册。

示例代码:

javascript 复制代码
import React, { useState } from 'react';
import { View, Image, Button } from 'react-native';
import * as ImagePicker from 'expo-image-picker';
import * as MediaLibrary from 'expo-media-library';

export default function ImagePickerExample() {
  const [pickedImage, setPickedImage] = useState(null);

  const takeImageHandler = async () => {
    try {
      const result = await ImagePicker.launchCameraAsync({
        mediaTypes: ImagePicker.MediaTypeOptions.Images,
        allowsEditing: true,
        aspect: [4, 3],
        quality: 1,
      });

      if (!result.cancelled) {
        setPickedImage(result.uri);
        await saveImage(result.uri);
      }
    } catch (error) {
      console.error('获取图片失败:', error);
    }
  };

  const saveImage = async (imageUri) => {
    try {
      await MediaLibrary.saveToLibraryAsync(imageUri);
      alert('图片已保存到相册!');
    } catch (error) {
      console.error('保存图片到相册失败:', error);
      alert('保存图片到相册失败,请重试!');
    }
  };

  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button title="拍照并保存到相册" onPress={takeImageHandler} />
      {pickedImage && <Image source={{ uri: pickedImage }} style={{ width: 200, height: 200, marginTop: 20 }} />}
    </View>
  );
}

以上代码,`ImagePicker.launchCameraAsync()` 用于启动相机并获取图片,然后使用 `saveImage()` 函数将获取到的图片保存到手机相册。

相关推荐
今天的砖头有点烫手啊40 分钟前
AI Agent 开发实战(十):Agent 设计模式(ReAct / Plan-Execute / Reflection)
人工智能·react.js·设计模式
不好听6132 小时前
React useContext:跨层级共享数据的上下文
react.js
不好听6132 小时前
React 自定义 Hook:把响应式与副作用装进 useXxx
react.js
触底反弹2 小时前
🏗️ 写完 Todos 之后,大型 React 项目的 7 个架构真相
前端·react.js·前端框架
kisshyshy2 小时前
从多页面到SPA:React Router 路由进阶完全指南
前端·javascript·react.js
Zzj_tju5 小时前
Tool-Using LLM 论文精读路线:从 ReAct 到可验证工具调用
前端·react.js·前端框架
To_OC12 小时前
别再瞎写 React Router!7 个高频踩坑点一次性讲透
前端·javascript·react.js
kyriewen16 小时前
我踩了三次同一个坑才明白:React里"改了数据却不重新渲染"的真正原因
前端·javascript·react.js
A242073493017 小时前
React中请求拦截与响应拦截的统一处理方案
前端·javascript·react.js
烬羽18 小时前
《受控 vs 非受控:你以为用对了 useState,直到你写了那个表单》
javascript·react.js·前端框架