Flutter图片保存插件image_gallery_saver_pro的使用

概述

image_gallery_saver_pro 是一个用于在 Android 和 iOS 设备上保存图片到相册的 Flutter 插件。它可以帮助开发者轻松地将网络图片或本地文件保存到设备的媒体库中。

使用步骤

1. 添加依赖

在项目的 pubspec.yaml 文件中添加 image_gallery_saver_pro 作为依赖项。例如:

dependencies:
  image_gallery_saver_pro: '^2.0.0'

然后运行以下命令以安装依赖:

flutter pub get

2. 配置 iOS

确保您的项目是用 Swift 创建的。在 Info.plist 文件中添加以下键值对:

<key>NSPhotoLibraryAddUsageDescription</key>
<string>应用需要访问您的相册以保存图片</string>

3. 配置 Android

在 Android 中,您需要请求存储权限才能将图片保存到相册。可以使用 flutter_permission_handler 来处理权限请求。此外,在 Android 10 及以上版本中,您需要在 AndroidManifest.xml 文件中添加以下行:

<application android:requestLegacyExternalStorage="true" ...>
</application>

4. 示例代码

示例 1:从网络保存图片

以下代码展示了如何从网络下载图片并将其保存到相册中。您可以指定图片的质量和文件名。

import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:image_gallery_saver_pro/image_gallery_saver_pro.dart';

Future<void> _save() async {
  // 从网络获取图片数据
  var response = await Dio().get(
      "https://ss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=a62e824376d98d1069d40a31113eb807/838ba61ea8d3fd1fc9c7b6853a4e251f94ca5f46.jpg",
      options: Options(responseType: ResponseType.bytes));

  // 将图片数据保存到相册
  final result = await ImageGallerySaver.saveImage(
      Uint8List.fromList(response.data), quality: 60, name: "hello");

  // 打印保存结果
  print(result);
}

示例 2:从网络保存视频或其他文件

以下代码展示了如何从网络下载文件(如视频或 GIF)并将其保存到相册中。

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:image_gallery_saver_pro/image_gallery_saver_pro.dart';
import 'package:path_provider/path_provider.dart';

Future<void> _saveVideo() async {
  // 获取临时目录
  var appDocDir = await getTemporaryDirectory();

  // 定义保存路径
  String savePath = appDocDir.path + "/temp.mp4";

  // 从网络下载文件
  await Dio().download("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", savePath);

  // 将文件保存到相册
  final result = await ImageGallerySaver.saveFile(savePath);

  // 打印保存结果
  print(result);
}

更多关于Flutter图片保存插件image_gallery_saver_pro的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图片保存插件image_gallery_saver_pro的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


image_gallery_saver_pro 是一个用于在 Flutter 应用中保存图片到设备相册的插件。它是 image_gallery_saver 的增强版,提供了更多的功能和更好的兼容性。以下是如何在 Flutter 项目中使用 image_gallery_saver_pro 的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 image_gallery_saver_pro 依赖:

dependencies:
  flutter:
    sdk: flutter
  image_gallery_saver_pro: ^1.1.0

然后运行 flutter pub get 来安装依赖。

2. 配置权限

在 Android 和 iOS 上保存图片到相册需要相应的权限。

Android

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

iOS

Info.plist 文件中添加以下权限:

<key>NSPhotoLibraryAddUsageDescription</key>
<string>需要访问相册以保存图片</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册以保存图片</string>

3. 使用插件保存图片

以下是一个简单的示例,展示如何使用 image_gallery_saver_pro 保存图片到相册:

import 'package:flutter/material.dart';
import 'package:image_gallery_saver_pro/image_gallery_saver_pro.dart';
import 'package:flutter/services.dart';
import 'dart:typed_data';
import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Image Gallery Saver Pro Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 从网络获取图片
              var url = 'https://example.com/image.jpg';
              var response = await http.get(Uri.parse(url));
              Uint8List imageBytes = response.bodyBytes;

              // 保存图片到相册
              final result = await ImageGallerySaverPro.saveImage(imageBytes);

              // 检查保存结果
              if (result['isSuccess']) {
                print('图片保存成功');
              } else {
                print('图片保存失败: ${result['errorMessage']}');
              }
            },
            child: Text('保存图片到相册'),
          ),
        ),
      ),
    );
  }
}
回到顶部