web-dev-qa-db-fra.com

Comment obtenir une Flint Uint8List à partir d'une image réseau?

J'essaie de convertir une image réseau en fichier et la première partie de cela est de la convertir en Uint8List. Voici comment je fais cela avec 1 de mes images d'actif ...

      final ByteData bytes = await rootBundle.load('assests/logo');
      final Uint8List list = bytes.buffer.asUint8List();

      final tempDir = await getTemporaryDirectory();
      final file = await new File('${tempDir.path}/image.jpg').create();
      file.writeAsBytesSync(list);

Comment puis-je faire cela avec Image.network(imageUrl.com/image)

6
Charles Jr
  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);
      });
    });
  }

Voir aussi https://github.com/flutter/flutter/issues/23761#issuecomment-43460668

Ensuite, vous pouvez utiliser image.toByteData().buffer.asUInt8List()

Voir aussi https://docs.flutter.io/flutter/Dart-ui/Image/toByteData.html

5

La manière la plus simple semble obtenir la réponse http en utilisant l'url de l'image et response.bodyBytes Contiendrait les données dans Uint8List.

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

Maintenant, vous pouvez faire des choses comme la conversion en chaîne encodée en base64 base64.encode(response.bodyBytes);

0
lordvcs