uni-app 图片横屏时 uni.previewImage 显示问题
uni-app 图片横屏时 uni.previewImage 显示问题
测试过的手机
小米10拍摄的图片,预览时会变成横屏(旋转9度)
示例代码
uni.previewImage
操作步骤
使用小米10拍的图片,预览时图片变成横屏
预期结果
使用小米10拍的图片,预览时图片变成横屏
实际结果
使用小米10拍的图片,预览时图片变成横屏
bug描述
小米10等手机拍摄的图片,预览时会变成横屏(旋转9度)
| 信息项 | 内容 |
|------------------|--------------------|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.22 |
| 手机系统 | 全部 |
| 手机厂商 | 华为 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 图片横屏时 uni.previewImage 显示问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 图片横屏时 uni.previewImage 显示问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个常见的EXIF方向信息解析问题。小米10等手机拍摄的图片在EXIF数据中记录了方向信息,但uni.previewImage在解析时未能正确处理这些方向标记,导致图片显示时发生旋转。
解决方案:
-
使用图片处理插件:在预览前通过uni-app插件市场的图片处理插件(如image-tools)读取并修正图片方向。
-
服务端预处理:上传图片时在服务端处理EXIF方向信息,返回修正后的图片用于预览。
-
自定义预览组件:开发自定义图片预览组件,集成exif-js库检测方向并应用CSS旋转。
-
临时规避方案:通过uni.chooseImage选择图片时,设置sizeType为压缩格式,可能规避此问题。
推荐实现代码:
// 使用exif-js检测方向
import EXIF from 'exif-js';
function correctImageOrientation(filePath) {
return new Promise((resolve) => {
EXIF.getData(filePath, function() {
const orientation = EXIF.getTag(this, 'Orientation');
// 根据orientation值应用CSS旋转
resolve(orientation);
});
});
}

