【问题标题】:Flutter convert image to binary dataFlutter 将图像转换为二进制数据
【发布时间】:2020-04-01 07:30:19
【问题描述】:

如何将图像文件转换为二进制数据? 我正在使用一个名为 image_picker 的库来从画廊或相机中挑选图像。 我想将我选择的图像转换为二进制数据。

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

【问题讨论】:

    标签: flutter


    【解决方案1】:

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

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

    ImageByteFormat 枚举包含以下常量。

    • png
    • rawRgba
    • 原始未修改
    • 价值观

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

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

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

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

    【讨论】:

    • 我尝试使用你的方法但是 toByteData 没有弹出。
    • 您的图像是图像类型还是文件类型?如果是文件类型,则使用 readAsBytes 方法或图像类型,然后使用 toByteData 方法。请检查我的更新答案。
    • 使用 readAsBytes() 方法而不将类型转换为 Image。它会工作
    • 试试这个 var bytes = await ImagePicker.pickImage(source: ImageSource.gallery).readAsBytes();
    • 非常感谢,我会检查一下。
    【解决方案2】:

    您可能需要考虑使用toByteData 方法。 它将图像对象转换为字节数组。 如果编码失败,它会返回一个返回二进制图像数据或错误的未来。 这是该网站的实现: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 参数指定返回字节的编码格式。 希望这可以帮助!

    【讨论】:

      【解决方案3】:

      只需使用这个method

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-26
        • 1970-01-01
        • 2017-02-04
        • 2017-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多