收藏
回答

wx.getImageInfo(Object object)获取拍照时间?

学校要求学生上传锻炼照片。

防止学生拿前几天照片作弊,规定当天拍摄的照片才有效。

小程序能否得到照片创建时间?

回答关注问题邀请回答
收藏

5 个回答

  • dzgycyj
    dzgycyj
    2022-05-04

    如果有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

    2022-05-04
    有用
    回复
  • 空白格
    空白格
    2021-03-05

    遇到了同样的问题 无法校验上传照片的时效性

    2021-03-05
    有用
    回复
  • optimistic
    optimistic
    2021-01-06

    exif如果没被抹掉 就可以

    2021-01-06
    有用
    回复
  •  
     
    2021-01-06

    把照片传到后端,去比对

    2021-01-06
    有用
    回复
  • 污昂ᰔᩚ王࿐
    污昂ᰔᩚ王࿐
    2021-01-06

    https://segmentfault.com/q/1010000019576355

    在网上看到的 不知道有没有用

    2021-01-06
    有用
    回复
登录 后发表内容
问题标签