希望能在chooseMedia后,获取到图片的拍摄时间,
mac开发调试的时候是可以获取的,但是iOS上就不行了。
是因为mac上调用的文件管理器,iOS用的苹果的控件,微信这边没有处理EXIF?
wx.chooseMedia({
mediaType:["image"],
sourceType:["album"],
sizeType:["original"],
success:onImageChoose
})
//调用chooseMedia部分,
拿到image的tempPath后,用readFile读出,然后尝试获取exif
parseImage(data){
// data为ArrayBuffer类型的JPG文件的二进制数据
let arr=new Uint8Array(data);
let base=0; // TIFF数据头开始地址
let timeTagIndex=0; // EXIF时间信息标记开始地址
for(let i=0;i<arr.length;i++){
// 获取TIFF数据头地址
if(arr[i]==69 && arr[i+1]==120 && arr[i+2]==105 && arr[i+3]==102 && arr[i+4]==0 && arr[i+5]==0){
base=i+6;
}
// 获取时间标签地址
if(arr[i]==0x90 && arr[i+1]==0x03){
timeTagIndex=i;
break; // 因为这个if的条件比较容易重复,但是我们要的是第一个,所以这里就可以直接退出了
}
}
let bias=0; // 偏移地址
for(let i=0;i<=3;i++){
bias=bias<<8;
bias+=arr[timeTagIndex+8+i];
}
let datetime_addr_index=base+bias; // 实际地址
let datetimestr=""; // 日期字符串
for(let i=datetime_addr_index;i<=datetime_addr_index+19;i++){
datetimestr+=String.fromCharCode(arr[i]);
}
console.log(datetimestr)
return datetimestr.replaceAll(':','/').split(" ")[0]
}
mac上能够正常获取到exif的拍摄日期,
ios就没有了。
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
mac的效果见图
https://developers.weixin.qq.com/s/TrmAQ7mu7EBl
mac运行效果