【发布时间】:2022-12-16 07:44:52
【问题描述】:
基本上我正在尝试使用 flutter 将 base64 jpeg 图像转换为普通图像
Image.memory(base64Decode(stringBase64))
图像最初是 jp/2 格式,flutter 不支持所以我将 jp/2 base64 字符串转换为 java 中的位图,然后转换为 base64 字符串 jpeg 以便能够使用以下代码在 flutter 中对其进行解码:
public static String encodeToBase64(Bitmap image)
{
Bitmap immagex=image;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT);
return imageEncoded;
}
当我尝试在 flutter 中解码这个 base64 字符串时,我怎么会收到这个错误
无效字符(第 77 个字符) /9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQAABtbnRyUkdC
它指向给定行中的最后一个 C。
我似乎不明白问题出在哪里,因为我可以在线将我的 base64 字符串转换为图像,但在 flutter 中它每次都会抛出该异常
【问题讨论】:
-
您的 base64 字符串很可能包含空格(例如被拆分成多行)。 Dart's base64 decoder does not accept whitespace,因此您需要先自行删除它(例如
base64Decode(stringBase64.replaceAll(RegExp(r'\s'), '')))。