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
相关产品推荐
相关产品推荐

