Compress all face thumbnails
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user