genThumbnail function
Implementation
Future<ThumbnailResult> genThumbnail(ThumbnailRequest r) async {
//WidgetsFlutterBinding.ensureInitialized();
Uint8List? bytes;
final Completer<ThumbnailResult> completer = Completer();
if (r.thumbnailPath != null) {
final thumbnailPath = await VideoThumbnail.thumbnailFile(
video: r.video!,
headers: {
"USERHEADER1": "user defined header1",
"USERHEADER2": "user defined header2",
},
thumbnailPath: r.thumbnailPath,
imageFormat: r.imageFormat!,
maxHeight: r.maxHeight!,
maxWidth: r.maxWidth!,
timeMs: r.timeMs!,
quality: r.quality!);
final file = File(thumbnailPath!);
bytes = file.readAsBytesSync();
} else {
bytes = await VideoThumbnail.thumbnailData(
video: r.video!,
headers: {
"USERHEADER1": "user defined header1",
"USERHEADER2": "user defined header2",
},
imageFormat: r.imageFormat!,
maxHeight: r.maxHeight!,
maxWidth: r.maxWidth!,
timeMs: r.timeMs!,
quality: r.quality!);
}
int _imageDataSize = bytes!.length;
final _image = Image.memory(bytes);
_image.image
.resolve(ImageConfiguration())
.addListener(ImageStreamListener((ImageInfo info, bool _) {
completer.complete(ThumbnailResult(
image: _image,
dataSize: _imageDataSize,
height: info.image.height,
width: info.image.width,
));
}));
return completer.future;
}