getGeneratorFromData static method

Future<PaletteGenerator> getGeneratorFromData(
  1. Uint8List data
)

Implementation

static Future<PaletteGenerator> getGeneratorFromData(Uint8List data) async {
  final ImageStream stream = Image.memory(data).image.resolve(
        const ImageConfiguration(devicePixelRatio: 1.0),
      );
  final Completer<ui.Image> imageCompleter = Completer<ui.Image>();
  late ImageStreamListener listener;
  listener = ImageStreamListener((ImageInfo info, bool synchronousCall) {
    stream.removeListener(listener);
    imageCompleter.complete(info.image);
  });

  stream.addListener(listener);
  final ui.Image image = await imageCompleter.future;

  final ByteData? imageData = await image.toByteData();
  if (imageData == null) {
    throw StateError('Failed to encode the image.');
  }

  return compute<GeneratorData, PaletteGenerator>(
    getGeneratorIsolate,
    GeneratorData(
      encodedImage: EncodedImage(
        imageData,
        width: image.width,
        height: image.height,
      ),
      colorsCount: 2,
    ),
  );
}