uni-app 调试及打包时调用uni.getImageInfo获取图片信息orientation都是'up'问题

uni-app 调试及打包时调用uni.getImageInfo获取图片信息orientation都是’up’问题

操作步骤:

  • uni-app制作app项目:
    • 在三星、华为、红米手机上都是这个问题!!!
    • 步骤1:
      • 手机系统拍照,根据手机拍照按四个方向上右下左进行拍照,得出上右下左四个方向的照片
    • 步骤2:
      • 在Hbuilder x 进行手机调试(或云端打包)调用uni.getImageInfo获取图片信息
    • 步骤3:
      • 得到的Info信息四个方向图片的orientation都是’up’

预期结果:

  • 在Hbuilder x 进行手机调试(或云端打包)调用uni.getImageInfo获取图片信息
    • 应该得到的Info信息四个方向图片的orientation是:up、down、right、left 这四个值

实际结果:

  • 在Hbuilder x 进行手机调试(或云端打包)调用uni.getImageInfo获取图片信息
    • 而得到的Info信息四个方向图片的orientation是:up

bug描述:

  • uni-app制作app项目:
    • 步骤1:
      • 手机系统拍照,根据手机拍照按四个方向上右下左进行拍照,得出上右下左四个方向的照片
    • 步骤2:
      • 在Hbuilder x 进行手机调试(或云端打包)调用uni.getImageInfo获取图片信息
    • 步骤3:
      • 得到的Info信息四个方向图片的orientation都是’up’

图片

信息类别 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 10.14.5
HBuilderX类型 正式
HBuilderX版本号 3.1.6
手机系统 Android
手机系统版本号 Android 10
手机厂商 华为
手机机型 p20
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app 调试及打包时调用uni.getImageInfo获取图片信息orientation都是'up'问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

手机相机拍出来的都是up的,不是根据手机拍照的方向来决定的。

更多关于uni-app 调试及打包时调用uni.getImageInfo获取图片信息orientation都是'up'问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我用3.0.4的HBuilder版本的去调试运行是可以返回orientation:up、down、right、left 这四个值的

回复 帅得被人砍: 重新测试了一下,没能复现问题,你可以在电脑上用MagicEXIF查看一下图片的信息。然后对比一下我们得到的结果,如果还有问题,麻烦把图片发出来

回复 DCloud_Android_zl: 你好,图片我上传了,麻烦帮我看下

四个方向拍的照片,需在app上调用uni.getImageInfo,返回的orientation都为【up】 HBuilder X版本:3.1.6.20210326




用MagicEXIF得到的orientation值




找到问题所在了!!! 步骤一: 用uni.chooseImage的sizeType当设置为original 原图时,调用uni.getImageInfo获取图片信息时,得到的orientation全部都是up值!!!
步骤二: 用uni.chooseImage的sizeType当设置为compressed 原图时,调用uni.getImageInfo获取图片信息时,得到的orientation值为正确属性值:up、down、left、right

这是一个已知的uni-app平台兼容性问题。uni.getImageInfo在Android设备上获取图片方向信息时,部分机型会始终返回’up’,主要原因是底层系统API对EXIF方向信息的解析支持不一致。

目前可行的解决方案:

  1. 使用EXIF.js库:通过引入第三方EXIF解析库来获取准确的图片方向信息
import EXIF from 'exif-js'
// 通过文件读取方式获取EXIF信息
  1. 图片预处理:在获取图片信息前,先通过canvas对图片进行旋转校正处理

  2. 使用plus.io API:在App端可尝试使用原生API获取更准确的图片信息

plus.io.getImageInfo({
  src: path,
  success: function(res) {
    // 处理图片信息
  }
})
回到顶部