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’
- 步骤1:
信息类别 | 信息 |
---|---|
产品分类 | 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
手机相机拍出来的都是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查看一下图片的信息。然后对比一下我们得到的结果,如果还有问题,麻烦把图片发出来
四个方向拍的照片,需在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方向信息的解析支持不一致。
目前可行的解决方案:
- 使用EXIF.js库:通过引入第三方EXIF解析库来获取准确的图片方向信息
import EXIF from 'exif-js'
// 通过文件读取方式获取EXIF信息
-
图片预处理:在获取图片信息前,先通过canvas对图片进行旋转校正处理
-
使用plus.io API:在App端可尝试使用原生API获取更准确的图片信息
plus.io.getImageInfo({
src: path,
success: function(res) {
// 处理图片信息
}
})