如何在颤动中将 Blob 转换为图像
Posted
技术标签:
【中文标题】如何在颤动中将 Blob 转换为图像【英文标题】:How to Transform a Blob to An Image in flutter 【发布时间】:2021-07-19 08:11:13 【问题描述】:我想显示存储在 mysql 数据库中的图像 问题是我无法将 blob 格式转换为 Uint8list ;我搜索并找到了灵魂,但它们都不起作用 从 JSON 中获取 blob:
var blob = yourJSONMapHere['yourJSONKeyHere'];
var image = BASE64.decode(blob); // 图像是一个 Uint8List
现在,在 Image.memory 中使用图像
new Container(child: new Image.memory(image));
这个灵魂解决方案不起作用,因为 base64.decode 需要一个字符串源而不是一个 blob 文件来转换
【问题讨论】:
【参考方案1】:不知道这是否与此特定案例有关,但与 Cloud Firestore 有类似问题。
以这种方式创建用于存储的 blob:
Blob myBlob = Blob(await audioFile.readAsBytes());
像往常一样在一个字段中保存到 Firestore 然后试图读回它,但无法弄清楚如何从我从 Firestore 回来的 blob 中获取 Uint8List。
我的解决方案:
//extract blob from field of Firestore document
Blob audioBlob = audioDocFromDb.get("fieldName");
//use .bytes on blob from this source
//package:cloud_firestore_platform_interface/src/blob.dart
Uint8List audioBytes = audioBlob.bytes;
这对我有用。 就我而言,我正在打包录制的音频并尝试播放它。
【讨论】:
【参考方案2】:我也遇到了这个问题,经过多次尝试,我现在知道了解决方案: 别忘了点赞!
Uint8List image = Uint8List.fromList(blob.toBytes());
Image.memory(图像);
【讨论】:
以上是关于如何在颤动中将 Blob 转换为图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在颤动中将 List<File> 转换为 List<Asset>
如何在颤动中将 List<Asset> 转换为 List<File>