onAccept method

  1. @override
Future<InspectionImage> onAccept(
  1. CameraInternalMedia media
)
override

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,
  );
}