我正在将保存在Firebase数据库中的图像转换为Base64,并希望进行解码和编码。我已经研究过类似的问题,但仍然会出错。这就是我目前所拥有的?
var image1 = String;
var pic = event.snapshot.value['image'];
var photo = BASE64.decode(pic);
image1 = photo;
我得到以下错误...A value of type "List<int>" cannot be assigned to a variable of type "Type"
如果您能提供一个反向过程,将图像编码到Base64中,以便将其保存回Firebase,我们将不胜感激。
***更新
这是我更新的代码,仍然抛出错误。
image1 = event.snapshot.value['image'];
var image = BASE64.decode(image1.toString());
new Image.memory(image),
错误是。。FormatException: Invalid Length must be a multiple of 4
7条答案
按热度按时间9o685dep1#
使用
'dart:convert'
包有一个更简单的方法实现和一些有用的方法:
hfsqlsce2#
您可以使用
Image.memory
构造函数将Uint8List
转换为FlutterImage
小部件。(如果需要,可以使用Uint8List.fromList
构造函数将List
转换为Uint8List
。)您可以使用BASE64.encode
进行其他操作。下面是一些示例代码。
但是,在数据库中存储大量的二进制数据通常不是一个好主意。它没有发挥Firebase实时数据库的优势,你最终会浪费带宽传输你不需要的数据,以及不必要的编码和解码。您应该使用
firebase_storage
插件,将图像的路径或下载URL存储在数据库中。q5lcpyga3#
ffdz8vbo4#
要打开相机照片(临时文件夹),编辑文件,然后将其转换为Base64:
代码:
解码并显示:
ffx8fchx5#
进口
从屏幕加载数据并分配给此变量
在代码树结构小部件中
u5rb5r596#
用这个简单的方法,我可以设置一个图像在Flutter。image属性是字符串形式的base64图像,例如:
试试下一个:
我希望这对你有用。快乐编程。
tzcvj98z7#
使用runtimeType检查类型,在我的例子中是String。我的函数返回Future<<U 'intList>>,我将其更改为Future<<s' tring>>,并使用Image.Memory,如下所示:Image.memory(base64Decode(_imageBytes!)
以下是我的完整代码:
希望这能帮上忙