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

Image 1 Image 2 Image 3


更多关于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中的旋转信息。

解决方案:

  1. 根据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);
  }
});
回到顶部