繁体   English   中英

Flutter:将 Base64 字符串转换为图像(类型文件变量)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM