评论

关于图片安全 imgSecCheck 云调用真机没有反应,超时的一种解决方案

关于图片安全 imgSecCheck 云调用真机没有反应,超时的一种解决方案

核心思想:

使用canvas将原图片缩小到 200 * 300 左右的这个范围内,即最大边长不超过350(大概值),传给imgSecCheck,通过后可再上传原图,不要看官方文档里给的什么大小1M,都是扯,就是要把图缩小。

细节注意:

1. 对于图片的缩小比例要按原图片大小而定,缩小比不统一,否侧原本很小的图片再缩小后安检的准确性就降低很多(下面代码有写)

2. 从相册选取照片时,sizeType里最好只设置 compressed, 也是为了压缩图片

3. 一些老机子老系统(本人母亲万年不更新的系统),chooseImage即便是设置了图片只选compressed,也会导致图片过大,超时,系统更新后问题解决,如果您的小程序也针对这样的用户,请做其他更多的考虑

4. imgSecCheck好像也对缩小后图片的长宽比有要求(本人测试后的推论),本人一加7Pro的机子,照片长宽比一般比较大,在缩小时要注意处理长宽比(下面代码有写

5. 下面的有关参数可以按自己需要进行更改,这仅仅是我个人测出来比较合适的一组参数

6. 没有测试过全景图,可能长宽那里需要更多的设置

代码:

获取照片:

按原图片大小设定缩小比例(图片里第一个5200应该是6200):

按图片长宽比,再设置缩小比率:

绘制并保存缩小后的图片:

调用云函数并传入buffer值,并设置安检成功/失败的回馈:

云函数里imgSecCheck的设置:

smallPic里放的是缩小后的图片,通过安检后,可上传fileID里存的原始图片,从而保证图片质量

欢迎大家的讨论和纠错

最后一次编辑于  2020-06-02  
点赞 0
收藏
评论

2 个评论

  • 云淡风清 hello world
    云淡风清 hello world
    02-04

    这段代码跑起来有遇到问题吗?我这边在wx.canvasToTempFilePath()提示:canvasToTempFilePath: fail canvas is empty 如何解决?

    02-04
    赞同
    回复
  • 俊儿哥哥
    俊儿哥哥
    2020-06-09

    大佬 可以贴这段的完整代码吗。 新手小白不是特别懂压缩那一块。。。

    2020-06-09
    赞同
    回复
登录 后发表内容