You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flutter_image_compress中targetPath是什么?如何解决图片压缩报错?

如何修复此报错

你用flutter_image_compress压缩图片时出现的问题,核心原因是把源文件路径和targetPath设成了同一个——压缩过程中需要读取原文件,同时又要往同一个路径写入新文件,会触发文件读写冲突,导致报错。

修复方案

给压缩后的图片指定独立的输出路径,不要覆盖原文件,比如给文件名加_compressed后缀:

Future<File> compressFile(File file) async {
  // 构造新的输出路径,避免和源文件路径重复
  final targetPath = "${file.absolute.path}_compressed";
  var result = await FlutterImageCompress.compressAndGetFile(
    file.absolute.path,
    targetPath,
    quality: 66,
  );
  // 增加空判断避免空指针异常
  if (result == null) {
    throw Exception("图片压缩失败");
  }
  return result;
}

额外注意事项:

  • 确保应用拥有对应平台的存储权限(Android的READ_MEDIA_IMAGES/WRITE_EXTERNAL_STORAGE,iOS的相册访问权限)
  • 如果原图片是png、webp等格式,要保证targetPath的后缀和压缩后格式匹配,或通过format参数指定输出格式

targetPath 参数含义

targetPath是compressAndGetFile方法的必填参数,作用是指定压缩完成后新图片文件的保存路径。压缩后的图片数据会写入该路径对应的文件,后续你可以通过这个路径直接访问压缩好的图片。

内容的提问来源于stack exchange,提问作者user20393696

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:55:13