Загрузка Flutter Image.memory ничего не показывает - PullRequest
0 голосов
/ 18 апреля 2020

По сути, я пытаюсь сделать анимацию, преобразовав изображение в градациях серого в полноцветное изображение. Полноцветное изображение загружается следующим образом:

    ByteData bytes = await rootBundle.load("...");
    ui.Codec codec = await ui.instantiateImageCodec(bytes.buffer.asUint8List());
    ui.FrameInfo fi = await codec.getNextFrame();
    return (await fi.image.toByteData()).buffer.asUint8List();

В виджете анимации я просто изменил часть данных изображения на оттенки серого и оставил все остальное. Эта проблема заключается в том, что при преобразовании байтов в виджет изображения следующим образом:

    return Image.memory(
      imglib.encodePng(imglib.Image.fromBytes(
          widget.rawWidth, widget.rawHeight, p)));

p - это модифицированная версия байтов в исходном изображении. Однако на экране ничего не появляется. И вызов

    return Image.memory(p);

вызовет исключение на instantiateCode c, не выполненном из-за отсутствия метаданных. Любые идеи о том, как решить эту проблему?

1 Ответ

0 голосов
/ 23 апреля 2020

Хорошо, я придумала способ уйти от этого. Для этой проблемы выше, я думаю, это вызвано медленной работой изображения и отображением со скоростью ниже 60 кадров / с. То, что я сделал вместо этого, чтобы построить стек с клипом переднего изображения по значению анимации.

...