TF-761 Add CompressFileUtils to handle compress and reduce image

This commit is contained in:
dab246
2022-07-28 14:32:25 +07:00
committed by Dat H. Pham
parent 7599a73ab0
commit 28127cf487
3 changed files with 40 additions and 0 deletions
+1
View File
@@ -35,6 +35,7 @@ export 'utils/fps_manager.dart';
export 'utils/build_utils.dart';
export 'utils/wrapper.dart';
export 'utils/string_convert.dart';
export 'data/utils/compress_file_utils.dart';
// Views
export 'presentation/views/text/slogan_builder.dart';
@@ -0,0 +1,37 @@
import 'dart:typed_data';
import 'package:core/utils/app_logger.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
class CompressFileUtils {
/// Maximum image size displayed
static const int MAXIMUM_IMAGE_SIZE_KB = 300;
/// Quality image 0 - 100
static const int QUALITY_DEFAULT = 50;
/// Max image width
static const int MAX_IMAGE_WIDTH = 1000;
bool _exceedMaximumImageSize(Uint8List bytesData) {
final maximumSizeBytes = MAXIMUM_IMAGE_SIZE_KB * 1024;
final sizeBytesData = bytesData.length;
log('CompressFileUtils::exceedMaximumImageSize(): maximumSizeBytes: $maximumSizeBytes');
log('CompressFileUtils::exceedMaximumImageSize(): sizeBytesData: $sizeBytesData');
return sizeBytesData > maximumSizeBytes;
}
Future<Uint8List> compressBytesDataImage(Uint8List bytesData, {int? maxWidth}) async {
if (_exceedMaximumImageSize(bytesData)) {
log('CompressFileUtils::_compressImageData(): BEFORE_COMPRESS: bytesData: ${bytesData.lengthInBytes}');
final bytesCompressed = await FlutterImageCompress.compressWithList(
bytesData,
quality: QUALITY_DEFAULT,
minWidth: maxWidth ?? MAX_IMAGE_WIDTH);
log('CompressFileUtils::_compressImageData(): AFTER_COMPRESS_MOBILE: bytesData: ${bytesCompressed.lengthInBytes}');
return bytesCompressed;
} else {
return bytesData;
}
}
}
+2
View File
@@ -77,6 +77,8 @@ dependencies:
flex_color_picker: 2.5.0
flutter_image_compress: 1.1.0
dev_dependencies:
flutter_test:
sdk: flutter