image - Flutter:将 Base64 字符串转换为图像(类型文件变量)
问题描述
照片是使用 Flutter Package image_picker 拍摄的,并保存为“文件”类型的变量。这些图像可以用 Flutter 查看。来自 BASE64 格式的 JSON 字符串中的照片应格式化为此数据类型,以便能够显示它们。有谁知道这是如何工作的?
使用 Flutter 可以直接显示 BASE64 图像。问题是渲染时会出现“闪烁”效果,因为每次用户输入时都会重新加载照片。框架似乎没有注意到 BASE64 图像中它始终是同一张照片。对于文件类型中的照片,不会出现此问题。
因此我不推荐直接渲染 BASE64 字符串。所以我想应用转换。
有没有人有解决方案如何将 BASE64 字符串转换为“文件”类型的变量?
var picturesTaken = <File>[];
Widget _showFoto(int currentFoto) {
return Padding(
padding: const EdgeInsets.only(bottom: 10.0),
child: Container(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Center(
child: Column(
children: <Widget>[
Image.file(picturesTaken[currentFoto])
],
),
),
),
)
);
}
解决方案
import 'dart:convert';
import 'dart:typed_data';
String _base64;
Uint8List bytes = BASE64.decode(_base64);
Image.memory(bytes)
(或者)
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
使用 'dart:convert' 包有一种更简单的方法
Image.memory(base64Decode(base64String));
推荐阅读
- microsoft-graph-api - Microsoft Graph 列表权限未显示所有权限资源
- .net - Xamarin Forms - 在选择器选择中使用 Async SelectedIndexChanged
- javascript - 尝试添加到状态数组抛出无法读取 null 的属性“setState”
- java - 如何获取列表视图项的 ID?我正在使用 Firebase 数据库
- sql - 由于表重命名而更改的重命名约束引用
- windows - 在 docker 镜像中安装 TensorFlow 时出错
- python - ValueError:为 plotly.graph_objs.Pie 类型的对象指定的属性无效:'xaxis'
- wordpress - htaccess url 映射到子文件夹
- rust - 如何在稳定的 Rust 中同步返回在异步 Future 中计算的值?
- python - Python3 的 urllib 验证自签名证书