tasq/lib/services/image_compress_service.dart

34 lines
969 B
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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] (1100).
/// Resizes the longest side to at most [maxDimension] pixels.
static Future<Uint8List> 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;
}
}
}