Compress all face thumbnails

This commit is contained in:
laurenspriem
2025-06-30 17:28:24 +02:00
parent 4c82d6bc84
commit 51ba11cfcc
2 changed files with 6 additions and 15 deletions

View File

@@ -48,15 +48,11 @@ class FaceThumbnailGenerator extends SuperIsolate {
).then((value) => value.cast<Uint8List>());
final compressedFaces = <Future<Uint8List>>[];
for (final face in faces) {
if (!shouldCompressFaceThumbnail(face)) {
compressedFaces.add(Future.value(face));
} else {
final compressedFace = _computer.compute<Map, Uint8List>(
compressFaceThumbnail,
param: {'pngBytes': face},
);
compressedFaces.add(compressedFace);
}
final compressedFace = _computer.compute<Map, Uint8List>(
compressFaceThumbnail,
param: {'pngBytes': face},
);
compressedFaces.add(compressedFace);
}
return await Future.wait(compressedFaces);
}

View File

@@ -33,9 +33,8 @@ const maxKernelSize = gaussianKernelSize;
const maxKernelRadius = maxKernelSize ~/ 2;
// Face thumbnail compression constants
const int _maxFaceThumbnailSizeBytes = 1 * 1024 * 1024; // 1MB
const int _faceThumbnailCompressionQuality = 85;
const int _faceThumbnailMinDimension = 720;
const int _faceThumbnailMinDimension = 512;
class DecodedImage {
final Image image;
@@ -544,10 +543,6 @@ Future<Uint8List> _cropAndEncodeCanvas(
return await _encodeImageToPng(croppedImage);
}
bool shouldCompressFaceThumbnail(Uint8List pngBytes) {
return pngBytes.length > _maxFaceThumbnailSizeBytes;
}
Future<Uint8List> compressFaceThumbnail(Map args) async {
final pngBytes = args['pngBytes'] as Uint8List;
try {