1***@qq.com
1***@qq.com
  • 发布:2026-05-25 11:49
  • 更新:2026-05-25 11:49
  • 阅读:18

无法获取图片的拍摄时间

分类:uni-app

async getImageShootTime(imgPath) {
return new Promise((resolve) => {
// #ifdef APP-PLUS || APP-HARMONY
// 使用 uni.getImageInfo 获取EXIF信息
uni.getImageInfo({
src: imgPath,
success: (res) => {
console.log('图片拍摄信息:', res);
let shootTime = "";

                        if (res.exif) {  
                            // 优先使用原始拍摄时间  
                            let rawTime = res.exif.DateTimeOriginal || res.exif.DateTime;  

                            if (rawTime) {  
                                // 将 EXIF 格式 "2024:01:15 14:30:25" 转换为 "2024-01-15 14:30:25"  
                                // 只替换日期部分的冒号,保留时间部分的冒号  
                                shootTime = rawTime.replace(/^(\d{4}):(\d{2}):(\d{2})/,  
                                    "$1-$2-$3");  
                                console.log('解析到拍摄时间:', shootTime);  
                            } else {  
                                console.log('未找到拍摄时间信息');  
                            }  
                        } else {  
                            console.log('图片无EXIF信息');  
                        }  

                        resolve(shootTime);  
                    },  
                    fail: (err) => {  
                        console.error('获取图片信息失败:', err);  
                        resolve("");  
                    }  
                });  
                // #endif  

                // #ifndef APP-PLUS && !APP-HARMONY  
                // 非安卓/鸿蒙环境直接返回空  
                resolve("");  
                // #endif  
            });  
        },    

打印res.exif一直是false无法获取图片的拍摄时间

2026-05-25 11:49 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据你的问题描述,在安卓和鸿蒙平台上使用 uni.getImageInfo 获取图片 EXIF 信息时,res.exif 始终为 false,无法获取拍摄时间。

这主要是因为 uni.getImageInfo API 的返回值中,本身并不包含 exif 属性。根据 uni-app 官方文档,uni.getImageInfo 的 success 回调返回的参数只有 widthheightpathorientationtype,并没有 exif 字段,因此你拿到的 res.exif 始终是 undefined(等同于 false)。

在安卓和鸿蒙平台上获取图片的 EXIF 信息(如拍摄时间),需要使用其他方案:

方案一:使用原生插件获取 EXIF(推荐)

由于 uni.getImageInfo 不支持获取 EXIF,你可以通过插件市场寻找专门的 EXIF 读取插件。比如 KJ-Exif 插件 就支持在 App 端获取和修改图片的 EXIF 信息。

使用示例:

const KJExif = uni.requireNativePlugin('KJ-Exif');  

uni.chooseImage({  
  count: 1,  
  success: (res) => {  
    const filePath = plus.io.convertLocalFileSystemURL(res.tempFilePaths[0]);  
    KJExif.inquire({ filePath }, (result) => {  
      console.log('EXIF信息:', result.imageInfo);  
      // 从 imageInfo 中获取拍摄时间  
    });  
  }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

方案二:在鸿蒙平台使用条件编译调用原生 API

鸿蒙平台提供了 ImageSource 类来读取图片的 EXIF 信息。你可以通过条件编译,在鸿蒙平台直接调用原生 API 来获取拍摄时间。这需要编写原生插件或使用 UTS 插件来实现。

方案三:确保使用原图路径

如果使用压缩后的图片路径,EXIF 信息可能会丢失。在选择图片时,务必设置 sizeType: ['original'] 来获取原图,确保 EXIF 信息不被清除:

uni.chooseImage({  
  count: 1,  
  sizeType: ['original'], // 关键:使用原图  
  sourceType: ['album', 'camera'],  
  success: (res) => {  
    // 使用原图路径获取 EXIF  
  }  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

总结

  • uni.getImageInfo 不支持获取 EXIF 信息,这是 API 本身的限制
  • 安卓和鸿蒙平台需要通过原生插件来读取 EXIF
  • 插件市场已有现成的 EXIF 读取插件,如 KJ-Exif
  • 鸿蒙平台可利用 ImageSource 原生能力读取 EXIF,但需要原生插件或 UTS 插件支持

如果你在插件市场没有找到合适的插件,也可以考虑自行开发原生插件来实现该功能,或者到 DCloud 插件市场 搜索其他 EXIF 相关的解决方案。

内容为 AI 生成,仅供参考

要回复问题请先登录注册