web-dev-qa-db-ja.com

ネットワークイメージからFlutter Uint8Listを取得する方法は?

ネットワークイメージをファイルに変換しようとしていますが、その最初の部分はUint8Listに変換することです。これが、アセットイメージの1つでこれを行う方法です...

_      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);
_

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);
      });
    });
  }
_

参照してください https://github.com/flutter/flutter/issues/23761#issuecomment-43460668

次に、image.toByteData().buffer.asUInt8List()を使用できます

https://docs.flutter.io/flutter/Dart-ui/Image/toByteData.html も参照してください

5

画像urlと_response.bodyBytes_を使用してhttp応答を取得する最も簡単な方法は、_Uint8List_のデータを含むことです。

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

これで、base64エンコード文字列base64.encode(response.bodyBytes);への変換などを行うことができます

0
lordvcs