Search packages, repositories and app categories

Package detailsv2.0.3

image_gallery_saver

A flutter plugin for save image to gallery, iOS need to add the following keys to your Info.plist file.

AndroidiOS
30-day downloads
18.8K
Likes
885
Pub points
150

Install package

flutter pub add image_gallery_saver

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The image_gallery_saver package is a Flutter plugin that enables saving images to the device's gallery on both Android and iOS. It provides a simple API to store byte data or file paths as images in the system's photo library. On iOS, users must add specific keys to the Info.plist file to grant access permissions. This plugin is ideal for apps that generate or download images and need to offer a 'save to gallery' feature. It supports both local files and raw image data, making it flexible for various use cases.

Use cases

  • Saving captured screenshots
  • Storing generated artwork
  • Exporting user-created images
  • Sharing images from app content
  • Saving downloaded media

Key features

  • Simple save API
  • Supports Android and iOS
  • Handles byte data and file paths
  • Requires Info.plist configuration on iOS
  • Cross-platform compatibility

Suitable for

  • Image editing apps
  • Social media sharing tools
  • Photo generation utilities
  • Apps with user-generated content
  • Tools requiring offline image storage

Considerations

  • iOS requires Info.plist entries
  • Permissions may vary by platform
  • Large files may impact performance
  • Limited customization options
  • No built-in progress feedback

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

image_gallery_saver

Build Status pub package license

We use the image_picker plugin to select images from the Android and iOS image library, but it can't save images to the gallery. This plugin can provide this feature.

Usage

To use this plugin, add image_gallery_saver as a dependency in your pubspec.yaml file. For example:

dependencies:
  image_gallery_saver: '^2.0.3'

iOS

Your project need create with swift. Add the following keys to your Info.plist file, located in /ios/Runner/Info.plist:

  • NSPhotoLibraryAddUsageDescription - describe why your app needs permission for the photo library. This is called Privacy - Photo Library Additions Usage Description in the visual editor

Android

You need to ask for storage permission to save an image to the gallery. You can handle the storage permission using flutter_permission_handler. In Android version 10, Open the manifest file and add this line to your application tag

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

Example

Saving an image from the internet, quality and name is option

  _saveLocalImage() async {
    RenderRepaintBoundary boundary =
        _globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
    ui.Image image = await boundary.toImage();
    ByteData? byteData =
        await (image.toByteData(format: ui.ImageByteFormat.png));
    if (byteData != null) {
      final result =
          await ImageGallerySaver.saveImage(byteData.buffer.asUint8List());
      print(result);
    }
  }
  
  _saveNetworkImage() 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);
  }

Saving file(ig: video/gif/others) from the internet

  _saveNetworkGifFile() async {
    var appDocDir = await getTemporaryDirectory();
    String savePath = appDocDir.path + "/temp.gif";
    String fileUrl =
        "https://hyjdoc.oss-cn-beijing.aliyuncs.com/hyj-doc-flutter-demo-run.gif";
    await Dio().download(fileUrl, savePath);
    final result =
        await ImageGallerySaver.saveFile(savePath, isReturnPathOfIOS: true);
    print(result);
  }

  _saveNetworkVideoFile() async {
    var appDocDir = await getTemporaryDirectory();
    String savePath = appDocDir.path + "/temp.mp4";
    String fileUrl =
        "https://s3.cn-north-1.amazonaws.com.cn/mtab.kezaihui.com/video/ForBiggerBlazes.mp4";
    await Dio().download(fileUrl, savePath, onReceiveProgress: (count, total) {
      print((count / total * 100).toStringAsFixed(0) + "%");
    });
    final result = await ImageGallerySaver.saveFile(savePath);
    print(result);
  }

Categories

Source repository

Projects using this package