import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image/image.dart' as image_lib; import 'package:palette_generator/palette_generator.dart'; class ImageSplitter { List splitImage(Map mapData) { List input = mapData['input']; int size = mapData['size']; image_lib.Image image = image_lib.decodeImage(input)!; int x = 0, y = 0; int width = (image.width / size).round(); int height = (image.height / size).round(); List parts = []; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { parts.add(image_lib.copyCrop(image, x, y, width, height)); x += width; } x = 0; y += height; } // convert image from image package to Image Widget to display List output = []; for (var img in parts) { output.add(Image.memory(Uint8List.fromList(image_lib.encodeJpg(img)))); } return output; } Future getImagePalette(ImageProvider imageProvider) async { final paletteGenerator = await PaletteGenerator.fromImageProvider(imageProvider); return paletteGenerator; } Future> runSplitterIsolate(List input, int size) async { final Map data = { 'input': input, 'size': size, }; List splitImages = await compute(splitImage, data); return splitImages; } }