flutter图片压缩到指定大小【兼容Android、IOS】

flutter图片压缩到指定大小【兼容Android、IOS】,例如 0.5MB

设置一个初始的压缩质量 quality 值为 90(可自定义)。
然后使用while 循环,只要图片的大小超过我们的目标大小(0.5MB),就一直压缩,直到小于 0.5MB

调用方法:

 String path = await compressImage(pickedFile.path);

导入了必要的库文件

import 'dart:io';
import 'package:flutter_image_compress/flutter_image_compress.dart';

compressImage方法:

// 异步方法,压缩图片到指定大小
static Future<List<int>> compressImage(String mirrorImage) async {
  try {
    List<int> imageBytes = await File(mirrorImage).readAsBytes();

    print("图片初始大小:${imageBytes.length / 1024 / 1024}MB");

    // 控制压缩后图片大小,不得超过0.5MB
    int quality = 90;
    while (imageBytes.length > 1024 * 1024 * 0.5 && quality > 0) {
      imageBytes = await FlutterImageCompress.compressWithList(
        imageBytes,
        quality: quality,
      );
      print('压缩后大小: ${imageBytes.length / 1024 / 1024}MB');
      quality -= 2;
    }
    
    return imageBytes;
  } catch (e) {
    // 处理异常情况
    print('压缩图片出错:$e');
    return null;
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤姐yyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值