如何使用Flutter将图像保存到照片库?

Dun*_*nes 9 photo gallery dart flutter

我的扑动应用程序使用camera包来拍照,我将其保存到应用程序的数据目录(从中获取path_provider和执行getApplicationDocumentsDirectory()功能).

如何将此图像文件保存到手机照片库中?我注意到该image_picker软件包允许从图库中读取,但我该如何写入呢?

jel*_*nap 15

https://pub.dev/packages/gallery_saver

此插件将图像和视频保存到画廊/照片。

您只需要为它提供从相机获得的临时文件的路径(甚至网络 url,它也可以工作):

GallerySaver.saveVideo(recordedVideo.path);
GallerySaver.saveImage(recordedImage.path);
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这在 Android 11 上失败了 (7认同)

oko*_*kok 10

2024年

gallery_saver及其分叉包(如image_gallery_saver)已过时。
我们应该用gal来代替。
await Gal.putImage(path);
await Gal.putVideo(path);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,不需要使用path_provider就可以获取临时目录,只需用这段代码

Directory.systemTemp.path;
Run Code Online (Sandbox Code Playgroud)

有些人尝试将媒体保存在项目的资产文件夹中,因此我也保留了该代码。

final byteData = await rootBundle.load('assets/image.jpg');
final file = await File('${Directory.systemTemp.path}${path.replaceAll('assets', '')}').create();
await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
await Gal.putImage(file.path);
Run Code Online (Sandbox Code Playgroud)

它适用于 Android 和 iOS。更多信息可以在gal 包的示例中找到。谢谢。


rmt*_*zie 6

不幸的是,颤振目前没有暴露这种功能.它似乎确实是插件的候选者.

如果你有足够的动力,你可以使用平台频道从颤动到原生Android(和iOS)代码进行通信,从中可以完全访问图库.如果你把它变成一个插件并发布它,奖励积分!


Are*_*res 6

有一个插件支持这个。

https://pub.dev/packages/image_gallery_saver

我已经对其进行了测试,并且运行良好。

  • 而且 - 就像 gallery_saver - 在 Android 11 上失败 (2认同)

ko2*_*2ic 5

我做了这个插件。如果您喜欢,请尝试一下。

https://pub.dartlang.org/packages/image_downloader#-readme-tab-

更新

我将解释如何使用。

将其添加到包的 pubspec.yaml 文件中:

dependencies:
  image_downloader: ^0.9.0
Run Code Online (Sandbox Code Playgroud)

之后,指定每个设备的权限。

只需写入以下内容即可保存图像。

ImageDownloader.downloadImage(url);
Run Code Online (Sandbox Code Playgroud)