uni-app uni.getImageInfo()获取图片信息翻转信息和高宽信息有问题
uni-app uni.getImageInfo()获取图片信息翻转信息和高宽信息有问题
操作步骤:
- 用ios相机拍照以后(HEIF格式),上传微信,再在安卓手机微信下载原图,用uni.chooseImage选择,问题必现
预期结果:
- uni.chooseImage返回正确的翻转参数和高宽
实际结果:
- 高宽反了,而且orientation显示up,没有翻转
bug描述:
- uni.getImageInfo()获取图片信息宽度和高度反,,EXIFS信息显示是翻转了的Orientation值是6
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows 10 10 专业工作站版 | HBuilderX |
| 手机系统 | 手机系统版本号 | 手机厂商 |
| Android | Android 11 | 小米 |
| 页面类型 | vue版本 | |
| vue | vue3 |

更多关于uni-app uni.getImageInfo()获取图片信息翻转信息和高宽信息有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app uni.getImageInfo()获取图片信息翻转信息和高宽信息有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的EXIF方向信息处理问题。在iOS设备拍摄的HEIF格式照片中,EXIF的Orientation值为6表示图片需要顺时针旋转90度,此时图片的实际宽高应该互换。
uni.getImageInfo()返回的宽高是未经方向校正的原始像素尺寸,而orientation字段虽然正确返回了’up’,但实际显示时未自动应用EXIF中的旋转信息。
解决方案:
- 根据orientation值手动校正宽高:
uni.getImageInfo({
src: imagePath,
success: (res) => {
let width = res.width;
let height = res.height;
// 如果orientation为6,需要交换宽高
if (res.orientation === 'up' && /* 实际EXIF为6 */) {
[width, height] = [height, width];
}
console.log('校正后宽高:', width, height);
}
});

