feat(image_compress_utility): improved compressing logic

This commit is contained in:
misha
2026-04-15 15:50:09 +03:00
parent e814683984
commit 03ec91a595

View File

@@ -3,7 +3,6 @@ import 'package:eatvio_app/core/app_initializer.dart';
import 'package:eatvio_app/core/app_config.dart';
import 'package:eatvio_app/core/locator_service.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:image/image.dart' as img;
import 'package:path/path.dart' as p;
abstract class ImageCompressUtility {
@@ -30,44 +29,21 @@ abstract class ImageCompressUtility {
}
static Future<File> compressFile(File file) async {
// Skip compression in test environment to avoid hangs
try {
final appConfig = sl<AppConfig>();
if (appConfig.buildType == AppBuildType.tests) {
// In tests, return the original file without compression
return file;
}
} catch (_) {
// If AppConfig is not available, proceed with compression
} catch (_) {}
final compressedPath = '${p.withoutExtension(file.path)}_compressed.jpg';
final result = await FlutterImageCompress.compressAndGetFile(file.absolute.path, compressedPath, quality: 90, minHeight: 1080, minWidth: 1080);
if (result == null) {
return file;
}
final image = img.decodeImage(file.readAsBytesSync())!;
int width = image.width;
int height = image.height;
if (width > height) {
if (width > 1080) {
height = (height * 1080) ~/ width;
width = 1080;
}
} else {
if (height > 1080) {
width = (width * 1080) ~/ height;
height = 1080;
}
}
String filePathWithoutExtension = p.withoutExtension(file.path);
String compressedFilePath = '${filePathWithoutExtension}_compressed.jpg';
final result = await FlutterImageCompress.compressAndGetFile(
file.absolute.path,
compressedFilePath,
quality: 90,
minHeight: height,
minWidth: width,
);
return File(result!.path);
return File(result.path);
}
}