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/build_utils.dart';
|
||||||
export 'utils/wrapper.dart';
|
export 'utils/wrapper.dart';
|
||||||
export 'utils/string_convert.dart';
|
export 'utils/string_convert.dart';
|
||||||
|
export 'data/utils/compress_file_utils.dart';
|
||||||
|
|
||||||
// Views
|
// Views
|
||||||
export 'presentation/views/text/slogan_builder.dart';
|
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
|
flex_color_picker: 2.5.0
|
||||||
|
|
||||||
|
flutter_image_compress: 1.1.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|||||||
Reference in New Issue
Block a user