compressImage method
300kb
Implementation
//todo better way
Future<File> compressImage(File fileImage,
{int expectedSize = 300000, String path = "Pictures"}) async {
final Directory extDir = await getApplicationDocumentsDirectory();
final String dirPath = '${extDir.path}/$path';
await Directory(dirPath).create(recursive: true);
final String targetPath =
'$dirPath/${DateTime.now().millisecondsSinceEpoch.toString()}_compress.jpg';
var currentSize = await fileImage.length();
File? resultFile;
var quality = 80;
while (currentSize > expectedSize) {
if (resultFile != null) {
resultFile.deleteSync();
quality = quality - 10;
}
resultFile = await FlutterImageCompress.compressAndGetFile(
fileImage.absolute.path,
targetPath,
quality: quality,
);
currentSize = await resultFile!.length();
}
if (resultFile == null) return fileImage;
return resultFile;
}