compressImage static method
Compress image
Implementation
static Future<XFile?> compressImage(
XFile file, {
int minWidth = 1080,
int quality = 70,
}) async {
XFile fileLocal = file;
if (file.path.isNetworkImage()) {
final HttpClient httpClient = HttpClient();
try {
final File imageFile = File(
'${await getCacheDirectory()}/${DateTime.now().millisecondsSinceEpoch}.png');
final HttpClientRequest request =
await httpClient.getUrl(Uri.parse(file.path));
final HttpClientResponse response = await request.close();
if (response.statusCode == 200) {
final Uint8List bytes =
await consolidateHttpClientResponseBytes(response);
await imageFile.writeAsBytes(bytes);
fileLocal = XFile(imageFile.path);
} else {}
} catch (ex) {
print(ex);
} finally {
httpClient.close();
}
}
final Uint8List? result = await FlutterImageCompress.compressWithFile(
fileLocal.path,
quality: quality,
format: CompressFormat.png,
minWidth: minWidth,
);
if (result == null) {
return null;
}
final String cacheDir = await getCacheDirectory();
final XFile compressedFile = XFile.fromData(result,
path: '$cacheDir/${DateTime.now().millisecondsSinceEpoch}.png');
await compressedFile.saveTo(compressedFile.path);
return compressedFile;
}