diff --git a/lib/services/storage_service.dart b/lib/services/storage_service.dart index 8cafb98..c58ace3 100644 --- a/lib/services/storage_service.dart +++ b/lib/services/storage_service.dart @@ -129,26 +129,27 @@ class StorageService { : decoded; var quality = 85; - var attempts = 0; Uint8List out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); // First pass: reduce JPEG quality. + var qualityAttempts = 0; while (out.lengthInBytes > _maxImageBytes && quality > 35 && - attempts < _maxCompressionAttempts) { + qualityAttempts < _maxCompressionAttempts) { quality -= 5; out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); - attempts += 1; + qualityAttempts += 1; } // Second pass: reduce dimensions progressively if still above the limit. + var dimensionAttempts = 0; while (out.lengthInBytes > _maxImageBytes && working.width > 320 && - attempts < _maxCompressionAttempts) { + dimensionAttempts < _maxCompressionAttempts) { final nextWidth = (working.width * 0.85).round(); working = img.copyResize(working, width: nextWidth); out = Uint8List.fromList(img.encodeJpg(working, quality: quality)); - attempts += 1; + dimensionAttempts += 1; } if (out.lengthInBytes > _maxImageBytes) {