onAccept method
Implementation
@override
Future<InspectionImage> onAccept(CameraInternalMedia media) async {
XFile? editedImageFile;
if (embedImageMetadata) {
final editedImageBytes =
await (media as CameraInternalImage).getEditedImage();
if (shouldCompress) {
final mb = editedImageBytes.length / (1024 * 1024);
// Pick compression quality based on file size
final qualityFactor = switch (mb) {
<= 1 => 80, // Low compression for small files
<= 2 => 60, // Good balance for medium files
<= 3 => 50, // Start compressing more aggressively
_ => 35, // Heavy compression for big files
};
final compressedBytes =
await editedImageBytes.compressed(quality: qualityFactor);
editedImageFile =
await _createFileFromBytes(compressedBytes, prefix: 'compressed');
} else {
editedImageFile =
await _createFileFromBytes(editedImageBytes, prefix: 'edited');
}
}
return InspectionImage(
data: editedImageFile ?? media.imageFile,
locationData: media.locationData,
timestamp: media.dateTime,
captureConfig: this,
);
}