パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v2.0.3

image_gallery_saver

画像をギャラリーに保存するためのFlutterプラグイン。iOSでは、Info.plistファイルに以下のキーを追加する必要があります。

AndroidiOS
30日間ダウンロード
1.9万
いいね数
885
Pub ポイント
150

パッケージをインストール

flutter pub add image_gallery_saver

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

image_gallery_saver パッケージは、Android および iOS の両方でデバイスのギャラリーに画像を保存できる Flutter プラグインです。このプラグインは、バイトデータまたはファイルパスをシステムの写真ライブラリに画像として保存するための簡単な API を提供します。iOS では、ユーザーがアクセス権限を付与するために Info.plist ファイルに特定のキーを追加する必要があります。このプラグインは、画像を生成またはダウンロードするアプリで「ギャラリーに保存」機能を提供したい場合に最適です。ローカルファイルと生の画像データの両方をサポートしており、さまざまなユースケースに柔軟に対応できます。

用途

  • キャプチャされたスクリーンショットの保存
  • 生成されたアートワークを保存する
  • ユーザーが作成した画像のエクスポート
  • アプリコンテンツから画像を共有する
  • ダウンロードしたメディアを保存する

主な機能

  • シンプルな保存 API
  • Android および iOS をサポートしています
  • バイトデータとファイルパスを処理する
  • iOS では Info.plist の設定が必要です
  • クロスプラットフォーム互換性

適している対象

  • 画像編集アプリ
  • ソーシャルメディア共有ツール
  • 写真生成ユーティリティ
  • ユーザーが生成したコンテンツを含むアプリ
  • オフライン画像ストレージを必要とするツール

注意事項

  • iOS では Info.plist のエントリが必要です
  • 権限はプラットフォームによって異なる場合があります
  • 大きなファイルはパフォーマンスに影響を与える可能性があります
  • 限定されたカスタマイズオプション
  • 組み込みの進行状況フィードバックなし

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

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);
  }

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト