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

