TF-761 Add CompressFileUtils to handle compress and reduce image
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,6 +77,8 @@ dependencies:
|
||||
|
||||
flex_color_picker: 2.5.0
|
||||
|
||||
flutter_image_compress: 1.1.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
Reference in New Issue
Block a user