无法在颤动中将 blob 显示为图像

Posted

技术标签:

【中文标题】无法在颤动中将 blob 显示为图像【英文标题】:Not able to display blob as image in flutter 【发布时间】:2020-01-25 17:09:34 【问题描述】:

我正在尝试在颤动中显示存储为 blob 的图像。我正在使用 php API 来获取图像并将其作为 base64 字符串发送。镜像构建时,出现Failed decoding image. Data is either invalid, or it is encoded using an unsupported format. 运行 xampp 服务器。 PHP API。使用 android studio 模拟器运行 Flutter 应用程序

我可以使用 html img 标签在网页上显示图像。

Image.memory(base64Decode(imagebase64string));

我希望图像显示在屏幕上 错误说

Failed decoding image. Data is either invalid, or it is encoded using an unsupported format.

【问题讨论】:

请使用编码的 base64 字符串添加您的代码。 var url = '192.168.0.104:80/bah/api/get_image.php'; var response = 等待 http.get(url); image_string = base64Decode(response.body.toString()); //在小​​部件中连续我有“Image.memory(image_string)” 【参考方案1】:

将它从 base64 解码回一个字节数组并从 dart.ui 使用它:

final codec = await ui.instantiateImageCodec(data);
final frame = await codec.getNextFrame();
return frame.image;

或者更简单,来自package:flutter/widgets.dart

return decodeImageFromList(data);

【讨论】:

【参考方案2】:

您必须手动删除 base64 标头:

    final stripped =
        imagebase64string.replaceFirst(RegExp(r'data:image/[^;]+;base64,'), '');
    setState(()
      data = base64.decode(stripped);
    );

然后你可以使用dataImage.memory

Image.memory(data)

【讨论】:

还是一样 这是我的图片 base64 字符串 THpscUx6UkJRVkZUYTFwS1VtZEJRa0ZSUVVGQlVVRkNRVUZFTHpKM1FrUkJRV2RIUW1kalIwSlJaMGhDZDJOS1ExRm5TMFJDVVU1RVFYTk1SRUpyVTBWM09GVklVbTltU0dnd1lVaENkMmRLUXpSdVNVTkpjMGw0ZDJOTFJHTndURVJCZUU1RVVUQkllV00xVUZSbmVWQkROSHBPUkV3dk1uZENSRUZSYTBwRFVYZE1SRUpuVGtSU1ozbEpVbmRvVFdwSmVVMXFTWGxOYWtsNVRXcEplVTFxU1hsTmFrbDVUV3BKZVUxcVNYbE5ha2w1VFdwSmVVMXFTWGxOYWtsNVRXcEplVTFxU1hsTmFrbDVUV3BKZVUxcVRDOTNaMEZTUTBGTVVVSlJRVVJCVTBsQlFXaEZRa0Y0UlVJdk9GRkJSMUZCUWtGUlFVUkJVVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkZRMEYzVVVZdk9GRkJSMEZGUWtGUlJVSkJVVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkZRMEYzVkM4eVowRk5RWGRGUVVGb1FVUkZRVUZCUVhWdE5UTk9NVE5QYl 跨度> 虽然只有一半 没有更多的想法,对不起。

以上是关于无法在颤动中将 blob 显示为图像的主要内容,如果未能解决你的问题,请参考以下文章

在颤动中将应用程序/八位字节流转换为图像/jpeg/png?

在模板中显示存储为二进制 blob 的图像

如何在颤动中将资产图像存储在缓存中

无法使用 PHP 显示数据库中的 blob 图像

将blob图像转换为数组以显示在spring mvc的网页中

如何在listview颤动中显示来自firestore的图像数组?