如果有Exif,添加以下代码可以获得时间,小程序可用,但是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_str="0x"; // 偏移地址 for(let i=0;i<=3;i++) bias_str+=arr[timeTagIndex+8+i].toString(16); let datetime_addr_index=base+parseInt(bias_str); // 实际地址 let datetimestr=""; // 日期字符串 for(let i=datetime_addr_index;i<=datetime_addr_index+19;i++){ datetimestr+=String.fromCharCode(arr[i]); } return datetimestr; // 接着,我们可以将日期字符串进行一定的字符串和日期时间处理,以满足需要 } 最终,返回的是“年:月:日 时:分:秒”的格式,根据需要进行字符串的进一步处理。 接着,在选择图片的处理函数中,按如下步骤: 1.调用wx.chooseImage,获得照片的临时路径; 2.获得FileSystemManager,并调用readFile()或者readFileSync()方法传入图片临时路径, 3.将获得的ArrayBuffer传入parseImage函数中,具体看我的简书:https://www.jianshu.com/p/c02147055830
wx.getImageInfo(Object object)获取拍照时间?学校要求学生上传锻炼照片。 防止学生拿前几天照片作弊,规定当天拍摄的照片才有效。 小程序能否得到照片创建时间?
2022-05-04