react-native-image-crop-picker安卓端选图裁剪前自动压缩如何解决
问题根因
react-native-image-crop-picker 安卓端存在默认的图片采样压缩逻辑:选图阶段如果没有显式配置图片压缩相关参数,库会自动对大尺寸图片做下采样,默认采样率刚好为1/8,和你遇到的9921x4961尺寸图片返回1241x621的现象完全吻合。iOS端没有这套默认下采样逻辑,因此不会出现该问题。
你当前代码中配置的compressVideoPreset仅对视频资源生效,无法控制图片的压缩行为,因此没有阻断默认的图片压缩逻辑。
修复方案
在openPicker的入参中显式配置图片压缩相关参数,将压缩宽高阈值设置为大于业务场景下可能遇到的最大图片尺寸,压缩质量设为1(最高质量),即可跳过默认的自动压缩,返回原图尺寸的资源。
修改后的完整代码如下:
const res = await ImagePicker.openPicker({ multiple: true, mediaType: 'any', compressVideoPreset: 'HighestQuality', maxFiles: 10, // 新增以下配置关闭安卓端默认图片自动压缩 compressImageMaxWidth: 12000, compressImageMaxHeight: 12000, compressImageQuality: 1 }) for await (const image of res) { Image.getSize(image.path, async (width, height) => { console.log('SIZE-PICKER: ', { width, height }); await cropAndAttachImage(image); }); }
配置说明:如果你的业务不需要支持超高清大尺寸图片,可以根据实际场景下调
compressImageMaxWidth和compressImageMaxHeight的数值,避免返回的图片体积过大造成后续上传、裁剪环节的性能卡顿。
内容的提问来源于stack exchange,提问作者warCommander
相关产品推荐
相关产品推荐

