getGeneratorFromPath static method

Future<PaletteGenerator> getGeneratorFromPath(
  1. String path
)

Implementation

static Future<PaletteGenerator> getGeneratorFromPath(String path) async {
  late final ImageStream stream;
  if (path.contains('http')) {
    stream = NetworkImage(path).resolve(
      const ImageConfiguration(devicePixelRatio: 1.0),
    );
  } else {
    stream = Image.file(File(path)).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,
    ),
  );
}