uni-app 5+ gallery.pick 选择图片后图片方向发生改变

uni-app 5+ gallery.pick 选择图片后图片方向发生改变

信息类别 详细信息
产品分类 HTML5+
HBuilderX版本号 3.3.5
手机系统 Android
手机系统版本号 Android 9.0
手机厂商 小米
手机机型 mi 6x
打包方式 云端

操作步骤:

5+ gallery.pick 选择图片后图片方向发生改变。 经测试,在选择图片或视频页面如果不勾选下面的 “原图” 选项,选择图片后会自动压缩且图片由以前的坚着变成了横着。反之勾选了 “原图” 就没问题。

预期结果:

选择啥样就是啥样

实际结果:

图片变横着的了

bug描述:

5+ gallery.pick 选择图片后图片方向发生改变。 经测试,在选择图片或视频页面如果不勾选下面的 “原图” 选项,选择图片后会自动压缩且图片由以前的坚着变成了横着。反之勾选了 “原图” 就没问题。


更多关于uni-app 5+ gallery.pick 选择图片后图片方向发生改变的实战教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

bug已修复,请将HBuilder X升级到3.3.7及以上版本

更多关于uni-app 5+ gallery.pick 选择图片后图片方向发生改变的实战教程也可以访问 https://www.itying.com/category-93-b0.html


好,升级了

麻烦提供一下可以复现问题的原图

好,有时间再说

bug已确认,将会在下版修复

不好意思这几天一直在忙别的

回复 矩信: 那你在把图片发出来,我验证一下

回复 DCloud_Android_zl: T.T…,找半天

这是Android系统上常见的EXIF方向信息处理问题。当不勾选“原图”时,系统会对图片进行压缩处理,但压缩过程中可能丢失或错误处理了EXIF中的方向信息(Orientation),导致图片显示方向错误。

解决方案:

  1. 强制使用原图:在调用gallery.pick时设置system: false,强制使用原图不压缩:
plus.gallery.pick(function(e){
    // 回调处理
}, function(e){
    console.log("取消选择");
}, {
    system: false,  // 不使用系统选择器
    multiple: false
});
  1. 手动校正方向:如果必须压缩,可以在获取图片后使用EXIF.js库读取方向信息并进行旋转校正:
// 安装exif-js库后
import EXIF from 'exif-js';

function correctImageOrientation(file) {
    EXIF.getData(file, function() {
        let orientation = EXIF.getTag(this, 'Orientation');
        // 根据orientation值进行相应的旋转处理
        // orientation值:1-正常,3-旋转180°,6-旋转90°,8-旋转270°
    });
}
  1. 使用uni.chooseImage替代:考虑迁移到uni-app的标准API,它已经内置了方向处理:
uni.chooseImage({
    count: 1,
    success: (res) => {
        // res.tempFilePaths 中的图片已正确处理方向
    }
});
回到顶部