关于图片安全 imgSecCheck 云调用真机没有反应,超时的一种解决方案
发布于 5 年前 作者 mengwei 3460 次浏览 最后一次编辑是 4 年前 来自 分享

核心思想:

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

细节注意:

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

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

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

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

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

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

代码:

获取照片:

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

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

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

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

云函数里imgSecCheck的设置:

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

欢迎大家的讨论和纠错

1 回复

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

回到顶部