无法在颤动中将 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);
);
然后你可以使用data
和Image.memory
。
Image.memory(data)
【讨论】:
还是一样 这是我的图片 base64 字符串 THpscUx6UkJRVkZUYTFwS1VtZEJRa0ZSUVVGQlVVRkNRVUZFTHpKM1FrUkJRV2RIUW1kalIwSlJaMGhDZDJOS1ExRm5TMFJDVVU1RVFYTk1SRUpyVTBWM09GVklVbTltU0dnd1lVaENkMmRLUXpSdVNVTkpjMGw0ZDJOTFJHTndURVJCZUU1RVVUQkllV00xVUZSbmVWQkROSHBPUkV3dk1uZENSRUZSYTBwRFVYZE1SRUpuVGtSU1ozbEpVbmRvVFdwSmVVMXFTWGxOYWtsNVRXcEplVTFxU1hsTmFrbDVUV3BKZVUxcVNYbE5ha2w1VFdwSmVVMXFTWGxOYWtsNVRXcEplVTFxU1hsTmFrbDVUV3BKZVUxcVRDOTNaMEZTUTBGTVVVSlJRVVJCVTBsQlFXaEZRa0Y0UlVJdk9GRkJSMUZCUWtGUlFVUkJVVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkZRMEYzVVVZdk9GRkJSMEZGUWtGUlJVSkJVVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkZRMEYzVkM4eVowRk5RWGRGUVVGb1FVUkZRVUZCUVhWdE5UTk9NVE5QYl 跨度> 虽然只有一半 没有更多的想法,对不起。以上是关于无法在颤动中将 blob 显示为图像的主要内容,如果未能解决你的问题,请参考以下文章
在颤动中将应用程序/八位字节流转换为图像/jpeg/png?