forked from eatvio/eatvio_app
feat(image_compressing): add image compressing func + integrated in diary
This commit is contained in:
45
lib/core/image_compressing/image_compress_utility.dart
Normal file
45
lib/core/image_compressing/image_compress_utility.dart
Normal file
@@ -0,0 +1,45 @@
|
||||
import 'dart:io';
|
||||
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 {
|
||||
static Future<List<File>> compressFilesList(List<File> files) async {
|
||||
final List<File> compressedFilesList = [];
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
compressedFilesList.add(await compressFile(files[i]));
|
||||
}
|
||||
return compressedFilesList;
|
||||
}
|
||||
|
||||
static Future<File> compressFile(File file) async {
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user