import 'dart:typed_data'; import 'package:flutter_image_compress/flutter_image_compress.dart'; /// Compresses a JPEG image to reduce upload size. /// /// Target: ≤ 200 KB for verification selfies. Falls back to the original /// bytes if compression fails so the upload is never blocked. class ImageCompressService { ImageCompressService._(); /// Compress [bytes] (JPEG/PNG) down to [quality] (1–100). /// Resizes the longest side to at most [maxDimension] pixels. static Future compress( Uint8List bytes, { int quality = 70, int maxDimension = 800, }) async { try { final result = await FlutterImageCompress.compressWithList( bytes, minHeight: maxDimension, minWidth: maxDimension, quality: quality, format: CompressFormat.jpeg, ); return result; } catch (_) { // If compression fails on any platform, return original bytes. return bytes; } } }