How to get a Flutter Uint8List from a Network Image?

前端 未结 3 514
栀梦
栀梦 2020-12-18 22:55

I\'m trying to convert a network image into a file and the first part of that is to convert it into a Uint8List. Here is how I\'m doing this with 1 of my asset images...

相关标签:
3条回答
  • 2020-12-18 23:12

    The simplest way seeems to get the http response using the image url and response.bodyBytes would contain the data in Uint8List.

    http.Response response = await http.get(
        'https://flutter.io/images/flutter-mark-square-100.png',
    );   
    response.bodyBytes //Uint8List
    

    Now you can do things like converting to base64 encoded string base64.encode(response.bodyBytes);

    0 讨论(0)
  • 2020-12-18 23:30

    The answers here are relevant and help explain how dart and flutter image compression/conversion works. If you would like a shortcut, there is this package https://pub.dev/packages/network_image_to_byte that makes it really easy.

    0 讨论(0)
  • 2020-12-18 23:33
      void initState() {
        super.initState();
        var sunImage = new NetworkImage(
            "https://resources.ninghao.org/images/childhood-in-a-picture.jpg");
        sunImage.obtainKey(new ImageConfiguration()).then((val) {
          var load = sunImage.load(val);
          load.addListener((listener, err) async {
            setState(() => image = listener);
          });
        });
      }
    

    See also https://github.com/flutter/flutter/issues/23761#issuecomment-434606683

    Then you can use image.toByteData().buffer.asUInt8List()

    See also https://docs.flutter.io/flutter/dart-ui/Image/toByteData.html

    0 讨论(0)
提交回复
热议问题