颤振将图像转换为二进制数据

时间:2020-04-01 07:30:19

标签: flutter

如何将图像文件转换为二进制数据? 我正在使用库调用image_picker从图库或照相机中选择图像。 我想将选择的图像转换为二进制数据。

File image = await ImagePicker.pickImage(source: ImageSource.gallery)
(image as Image).toByteData // the method toByteData here is not pop up.

3 个答案:

答案 0 :(得分:2)

toByteData()方法允许将image转换为字节数组。我们需要在format参数中传递格式,该参数指定返回字节的格式。它会返回以二进制数据或错误结尾的将来。

final pngByteData = await image.toByteData(format: ImageByteFormat.png);

ImageByteFormat枚举包含以下常量。

  • png
  • rawRgba
  • rawUnmodified

有关ImageByteFormat的更多信息,请查看此documentation

更新::要将image file转换为字节。然后使用readAsByte()方法。

var bytes = await ImagePicker.pickImage(source: ImageSource.gallery).readAsBytes();

要将图像转换为文件,请查看此answer

答案 1 :(得分:1)

只需使用此method

var bytes = await File('filename').readAsBytes();

答案 2 :(得分:1)

您可能要考虑使用toByteData方法。 它将图像对象转换为字节数组。 它返回一个future,该future返回一个二进制图像数据,如果编码失败,则返回一个错误。 这是此网站的实现:https://api.flutter.dev/flutter/dart-ui/Image/toByteData.html

Future<ByteData> toByteData({ImageByteFormat format = ImageByteFormat.rawRgba}) {
  return _futurize((_Callback<ByteData> callback) {
    return _toByteData(format.index, (Uint8List encoded) {
      callback(encoded?.buffer?.asByteData());
    });
  });
}

format参数指定将以哪种编码格式返回字节。 希望这可以帮助!