如何将图像转换为 base64 和 base64 为图像?我这样做的方式行不通

Posted

技术标签:

【中文标题】如何将图像转换为 base64 和 base64 为图像?我这样做的方式行不通【英文标题】:How do I convert an image to base64 and base64 to image? The way I do it doesn't work 【发布时间】:2019-06-11 11:35:02 【问题描述】:

这是一个示例代码。

var image = await ImagePicker.pickImage(source: ImageSource.camera);
var stringBytes = base64.encode(image.readAsBytesSync());
var bytes = base64.decode(stringBytes);
var newImage = new File.fromRawPath(bytes);
I/flutter (14608): The following FileSystemException was thrown resolving an image codec:
I/flutter (14608): Cannot open file, path = '����*�Exif
I/flutter (14608): 
I/flutter (14608): 
I/flutter (14608): Business
I/flutter (14608): 11:42:34
I/flutter (14608): �
I/flutter (14608):  
I/flutter (14608): ��
I/flutter (14608): ��
I/flutter (14608): %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������
I/flutter (14608): ��
I/flutter (14608): $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������
I/flutter (14608): ��ت���U-%�����^
I/flutter (14608): �m���
I/flutter (14608): u���V�N6R���
I/flutter (14608): j_8W,1�ڹ�?ܻw^��� ��6��ꗚm���E[ϓ�������>���X�W��y������=�[!��2!ډ�'8�Mk^ܾ��eS�

未知字符列表继续。

我做错了什么?

我想把它转换成base64,因为我要把它添加到数据库中。

【问题讨论】:

可能重复:***.com/a/46146008/735226 How to convert BASE64 string into Image with Flutter?的可能重复 这些都不起作用 【参考方案1】:

不,您正在传递图像的内容以创建一个以内容作为原始路径的新文件,这是行不通的。

new File.fromRawPath 确实如此,根据docs:

从原始路径创建一个 File 对象,即一个字节序列 由操作系统表示。

您要做的是创建一个文件并将内容存储到该文件中,可以这样完成(Source):

var imageFile = File('myimage.jpg');
var sink = imageFile.openWrite();
sink.write(bytes);
await sink.flush();
await sink.close();

【讨论】:

以上是关于如何将图像转换为 base64 和 base64 为图像?我这样做的方式行不通的主要内容,如果未能解决你的问题,请参考以下文章

如何将相机捕获的图像转换为带有颤振的base64

python:将base64编码的png图像转换为jpg

如何将此 imweb(图像类型)转换为 base64?

如何将base64图像转换为图像并将其保存到文件系统[重复]

如何将图像的字节数组转换为表示 jpg 的 base64 编码字符串

如何将 base64 字符串格式的图像转换为清晰图像缩小器期望的数据类型?