![](/img/trans.png)
[英]Fetch image from URL and convert it to base64 string - Flutter
[英]Flutter: Convert Base64 String to Image (Type File Variable)
照片使用 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])
],
),
),
),
)
);
}
您的base64字符串不应在前缀中包含' data:image/jpg;base64,
'等部分
List<int> imageBytes = _image.readAsBytesSync();
String imageB64 = base64Encode(imageBytes);
在用户界面中显示
Image.memory(
img,
width: 85,
height: 85,
fit: BoxFit.cover,
)
根据您的回答,我找到了解决方案:
Image.memory(
img,
width: 85,
height: 85,
fit: BoxFit.cover,
gaplessPlayback: true
)
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.