小程序
小游戏
企业微信
微信支付
扫描小程序码分享
学校要求学生上传锻炼照片。
防止学生拿前几天照片作弊,规定当天拍摄的照片才有效。
小程序能否得到照片创建时间?
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
如果有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
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
遇到了同样的问题 无法校验上传照片的时效性
exif如果没被抹掉 就可以
把照片传到后端,去比对
https://segmentfault.com/q/1010000019576355
在网上看到的 不知道有没有用
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
如果有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
遇到了同样的问题 无法校验上传照片的时效性
exif如果没被抹掉 就可以
把照片传到后端,去比对
https://segmentfault.com/q/1010000019576355
在网上看到的 不知道有没有用