在 Flutter Web 中将图像文件转换为 base64 图像

Convert image file into base64 image in Flutter Web

我正在使用 flutter 相机插件使用相机设备从我的应用中拍摄照片,并将它们作为 base64 图像发送到服务器上。

当我想将生成的图像转换为 base 64 图像时,我可以在我的 android 模拟器中使用以下行完美地完成此操作:

base64img = base64Encode(File(image.path).readAsBytesSync());

“图像”是一个 XFile。 “image.path”是一个字符串。

当我尝试在网络上使用同一行时,出现此错误:

Exception caught by gesture ═══════════════════════════════════════════ The following UnsupportedError was thrown while handling a gesture: Unsupported operation: _Namespace

我尝试了这一行(直接尝试转换 XFile 而不是从图像路径字符串转换生成的文件):

base64img = base64Encode(image.readAsBytesSync())

我得到同样的错误。

感谢您的帮助。

试试这个方法

import 'dart:convert';
import 'dart:io';

import 'package:image/image.dart';

String imageToBase64(File file, {int? height}) {
  final image = decodeImage(file.readAsBytesSync())!;
  final resizedImage = copyResize(image, height: height ?? 800);
  return base64Encode(encodeJpg(resizedImage));
}

找到解决方案,使用 readAsBytes 而不是 readAsBytesSync:

var bytes = await widget.image.readAsBytes();
var base64img = base64Encode(bytes);