背景要求:个人做了一个校友交流的小程序。有校友相册、校友聚会、校友资讯、校友互助等功能。校友从本地相册中选择一张或多张图片后,将与文章内容一起保存到服务器。这个涉及到内容安全,投稿审核失败是因为没有做好内容安全。防止一些色情低俗的事情发生。目前可用的图片审核方案优缺点:方案一:小程序自带同步API:security.imgSecCheck优点:小程序自带无需额外应用,格式支持PNG、JPEG、JPG、GIF,上限为单个appId每分钟调用2000次,每天20万次,基本满足需求。缺点:图片大小限制为1M,图片大小不超过750pxx1334px。4000以上会有问题解决方法二:小程序自带的异步API:security.mediaCheckAsync优点:单个文件大小不超过10M,解决了手机或相册中大图片的限制缺点:是异步调用,必须先上传图片,处理不及时,可能需要30分钟才能返回结果。您需要提供一个回调URL来接受处理结果。不健康的图片无法实时处理,容易产生风险。方案三:珊瑚图片在小程序服务市场的安全优势:很好用,但是已经下载了(2021年4月9日),很郁闷方案四:小程序服务市场天语一直没有上线许久。按照官方文档是不能正常调用的,只有30天的免费使用期。方案五:腾讯云:T-Sec天宇图片内容安全优势:可准确识别图片中潜在的攻击性、不安全或不当内容,支持配置图片黑名单,识别自定义图片类型。缺点:文档调用复杂,价格高方案六:百度云:内容审核平台优势:基于深度学习的智能内容审核方案,精准过滤图片和视频中的色情、暴力、政治敏感、广告、恶心、不良场景等违规内容还可以从美感和清晰度两个维度筛选图片,贴近业务需求,释放审核人力。缺点:1)还是价格!!!2)接入成本我的方案综合以上方案的优缺点,我还是选择方案一(security.imgSecCheck),原因如下:1.小程序自带的API调用方便,尤其是云函数称呼;2.没有额外申请流程3没有成本开销4测量次数上限基本满足我的校友记录小程序security.imgSecCheck急待解决的问题:图片大小限制1M图片大小限制问题(官方表述750pxx1334px)我的解决方案虽然官方文档有点图片大小的上限是我当时犹豫不决的原因。但是在实际应用中,发现4000x4000的尺寸也可以实现检测,但是4000px以上就会出现问题。在实际图片中,上述大尺寸的很少见,所以可以暂时忽略,只需要对大于1M的图片进行压缩即可。图片大于1M的思路:从校友会小程序相册中选取图片-->判断图片是否大于1M-->压缩图片-->上传图片流到security.imgSecCheck检测-->通过-->保存小于1M的图片思路:从校友会小程序相册中选择图片-->判断图片是否大于1M-->不压缩图片-->上传图片流到security.imgSecCheck进行检测-->实现方式-->保存代码:小程序端/***选择上传图片*/bindChooseImgTap:function(e){wx.chooseImage({count:this.data.imgMax-this.data.imgList.length,//Default9sizeType:['compressed'],//可以指定原图或压缩图,默认都有sourceType:['album','camera'],//选择来自专辑success:async(res)=>{wx.showLoading({title:'图片验证',mask:true});for(letk=0;k
