在flutter中将内存图像(如Uint8list)保存为图像文件

Posted

技术标签:

【中文标题】在flutter中将内存图像(如Uint8list)保存为图像文件【英文标题】:Save a memory image (such as Uint8list) as image file in flutter 【发布时间】:2021-03-17 04:13:13 【问题描述】:

我有一些 Uint8lists,我想将它们保存为 jpg 文件。 我在网上搜索了很多,但一无所获! 有人可以帮忙吗?

谢谢,

【问题讨论】:

File 来自dart.io 的类具有保存该列表的方法 我不想保存列表 “我想将它们保存在存储空间中” - 那么你到底想做什么呢? 抱歉解释不好!现已编辑。 这个问题很难理解。更好地解释你的问题 【参考方案1】:

“存储”是指写入文件吗?你真的不需要“颤抖”来做到这一点。只需使用 dart 提供的库即可。这是一个下载我的 gravatar 的示例,您可以将其作为 Uin8List 获取,然后将其保存到文件中。

import 'dart:io';
import 'dart:typed_data';

import 'package:http/http.dart' as http;

void main() 
  http.get('https://www.gravatar.com/avatar/e944138e1114aefe4b08848a46465589').then((response) 
    Uint8List bodyBytes = response.bodyBytes;
    File('my_image.jpg').writeAsBytes(bodyBytes);
  );

【讨论】:

'my_image.jpg',它将存储在哪里?我们如何设置特定的文件夹来存储文件? 您可以保存到特定路径,例如final dir = await getExternalStorageDirectory(); final myImagePath = dir!.path + "/myimg.png"; File imageFile = File(myImagePath); if(! await imageFile.exists()) imageFile.create(recursive: true); imageFile.writeAsBytes(image); @djalmafreestyler - 它将存储在您运行程序的“当前工作目录”中。

以上是关于在flutter中将内存图像(如Uint8list)保存为图像文件的主要内容,如果未能解决你的问题,请参考以下文章

从 Flutter 中的 Uint8List 数据更改图像大小

从 uInt8List Flutter 裁剪图像

如何从网络图像中获取 Flutter Uint8List?

Flutter 将 Uint8List 传递给 iOS Objective-c

来自数据库的 Flutter Uint8list 字符串呈现为图像

Flutter - 如何将 List<Uint8List> 放入共享首选项中?