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

Flutter从相册选取图片尺寸被压缩,如何保留原尺寸?

问题原因及解决方案

原因

image_picker插件的pickImage方法默认会对图片进行压缩处理,即便未设置imageQuality参数,iOS和Android平台也会自动返回压缩后的图片版本,而非相册中的原始大图。你当前的代码没有指定任何禁止压缩的参数,因此插件返回了大幅压缩后的小图。

解决方法

修改pickImage的调用参数,明确指定不限制图片尺寸、不压缩质量,即可获取原尺寸图片:

// image_picker: ^0.8.7+1
final imagePicker = ImagePicker();
final pickedImage = await imagePicker.pickImage(
  source: ImageSource.gallery,
  maxWidth: null,
  maxHeight: null,
  imageQuality: 100,
);

if (pickedImage != null) {
  final originalImage = File(pickedImage.path);
  final imageSize = originalImage.lengthSync();
  
  setState(() {
    _image = originalImage;
    _imageSize = imageSize;
    // 注意:需先通过Image.file(originalImage)加载图片,才能获取宽高
    // 示例:
    // final image = Image.file(originalImage);
    // _imageWidth = image.width;
    // _imageHeight = image.height;
  });
}

补充说明:

  • 部分Android设备需在AndroidManifest.xml中添加READ_EXTERNAL_STORAGE权限(针对Android 10及以下版本),确保应用能访问原始图片文件。
  • 如果上述参数调整后仍无法获取原图,可以尝试使用插件的pickMedia方法(需确认插件版本支持),该方法默认返回原始媒体文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:34:59