- 向官方道歉。接口security.imgSecCheck有问题?我已经解决。并附上最全代码,保证能用
首先,发布的帖子,关于“security.imgSecCheck 这个图片内容审核API 有问题”的帖子,我已经解决。 之前说接口不稳定,错怪了官方! 向官方道歉, 向官方道歉, 向官方道歉!!! 以下分享经验【3个重点】: 1.(重点)控制图片尺寸:图片尺寸不超过 750px x 1334px 2.(重点)检测的图片,一定要压缩后再上传。(图片大小限制:1M) 自己检测过。500k-1MB还是大了。建议在50kb 左右。 3.(重点)通过获取文件信息,图片以ArrayBuffer格式上传云函数进行检测。 wx.getFileSystemManager().readFileSync(图片临时文件) //文件二进制内容 ArrayBuffer 以上条件缺一不可 根据返回结果,执行你需要的代码 复制以下代码。直接可以使用。 ------------------------------------------------------------------------------------------------------------------------ 【xxx.html代码】 <canvas canvas-id='imageBox' class="imageBox" style="border:#000 5px solid; width:{{imageBoxMake_Width}}px; left:{{screenWidth * 1.2}}px;"></canvas> 【xxx.wxss代码】 /* 设定页面决对定位 */ page{ position: relative; } /* 设定画布相对定位 */ .imageBox{ position: absolute; z-index: 0; } 【xxx.js代码】 //图片内容安全-画布 imageBoxMake_Width: '', imageBoxMake_height: '', /**生 命周期函数--监听页面加载 */ onLoad: function(options) { console.log('进入introduction页面') this.setData({ //画布布局。让画布在屏幕之外 screenWidth: app.globalData.screenWidth, //画布距离屏幕左侧宽度 = 屏幕宽度 }) }, //【选择图片】方法 chooseImage() { var that = this //使手机发生较短时间的振动 wx.vibrateShort() wx.showActionSheet({ itemList: ['拍照', '相册',], success(res) { console.log(res.tapIndex) //拍照vounDemo if (res.tapIndex == 0) { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], //['original', 'compressed'] sourceType: ['camera'], success(res) { // 图片临时地址 const imgFileURL = res.tempFilePaths[0] console.log('打印取到的图片') console.log(res) //canvas绘制并压缩图片,然后图片内容安全检测 that.imageBoxMake(imgFileURL) } }) } //手机相册 vounShow else if (res.tapIndex == 1) { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album'], success(res) { // 图片临时地址 const imgFileURL = res.tempFilePaths[0] console.log('打印取到的图片') console.log(res) //canvas绘制并压缩图片,然后图片内容安全检测 that.imageBoxMake(imgFileURL) } }) } }, fail(res) { console.log(res.errMsg) } }) }, //绘制【内容安全图片图片】canvas imageBoxMake: function (imgFileURL) { wx.showLoading({ title: '正在压缩图片', //正在内容安全检测 }) console.log('开始imageBoxMake方法') var that = this var saveSize = 100 var canvasId = 'imageBox' //画布ID //创建画布 const ctx = wx.createCanvasContext(canvasId) ctx.save() //获得图片信息 wx.getImageInfo({ src: imgFileURL, //获得画芯图片 success(res) { //图片比例 var perWHcanvas = res.height / res.width that.setData({ //画布尺寸,处理为(100px)像素宽度。 imageBoxMake_Width: saveSize, imageBoxMake_height: saveSize * perWHcanvas, //高度等比 }) //绘制图 ctx.drawImage(res.path, 0, 0, res.width, res.height, 0, 0, saveSize, saveSize * perWHcanvas) ctx.restore() //绘制保存 ctx.draw(true) console.log('绘制【内容安全图片图片】canvas完成') setTimeout(function () { that.imageBoxIMG(saveSize, perWHcanvas, canvasId, imgFileURL) //压缩图片尺寸,并上传 }, 2000) } }) }, //压缩图片尺寸,并上传 imageBoxIMG: function (saveSize, perWHcanvas, canvasId, imgFileURL) { console.log('开始 imageBoxIMG 方法') var that = this wx.canvasToTempFilePath({ x: 0, y: 0, width: saveSize, height: saveSize * perWHcanvas, destWidth: saveSize, destHeight: saveSize * perWHcanvas, canvasId: canvasId, //这是canvasId fileType: 'jpg', //目标文件的类型 quality: 0.8, //图片的质量 success(res) { console.log('保存的图片临时路径' + res.tempFilePath) var canvasImage = res.tempFilePath wx.hideLoading() //隐藏 loading 提示框 const imageArrayBuffer = wx.getFileSystemManager().readFileSync(canvasImage) //文件二进制内容 ArrayBuffer that.imgSecCheck(imgFileURL, imageArrayBuffer) } }) }, //图片智能鉴黄 imgSecCheck: function (imgFileURL, imageArrayBuffer) { console.log('开始imgSecCheck方法') wx.showLoading({ title: '图片安全检测中', //正在内容安全检测 }) //初始化云开发及设置其环境 wx.cloud.init({ env: app.globalData.env, //注意:我这里是调用app.js里设置好的云环境。你们可以改为自己的云环境 traceUser: true }) wx.cloud.callFunction({ // 要调用的云函数名称 name: 'imgSecCheck', // 传递给云函数的event参数 data: { imageArrayBuffer: imageArrayBuffer } }).then(res => { console.log('打印云函数imgSecCheck返回结果为') console.log(res) wx.hideLoading()//隐藏 loading 提示框 if (res.result.errMsg == "openapi.security.imgSecCheck:ok") { //内容正常。这里可以执行你需要的【方法】代码 } else{ //内容检测结果为不安全 this.showModal() } }).catch(err => { //错误 console.log('打印err结果为 错误') console.log(err) wx.hideLoading() //隐藏 loading 提示框 //内容检测结果为不安全 this.showModal() }) }, //内容检测结果为不安提示 showModal: function () { wx.showModal({ title: '图片内容违规', content: '通过腾讯图片智能鉴黄检测到你发布的内容,可能包含涉黄、涉暴、涉政等有害信息。为营造安全绿色的平台,我们坚决拒绝上传危害内容、言论。若你多次上传危害内容,系统将自动封号哦,并同步到网络安全部', confirmText: '知道了', confirmColor: '#000000', showCancel: false, success(res) { if (res.confirm) { console.log('用户点击知道了') } else if (res.cancel) { console.log('用户点击取消') } } }) }, 【云函数代码】 // 云函数入口文件 imgSecCheckPro const cloud = require('wx-server-sdk') // 云函数入口函数 exports.main = async (event, context) => { //初始化云函数 cloud.init({ env: event.env }) try { return await cloud.openapi.security.imgSecCheck({ media: { contentType: 'image/png', value: Buffer.from(event.imageArrayBuffer) } }) } catch (err) { // 错误处理 // err.errCode !== 0 } } ------------------------------------------------------------------------------------------ 复制以上代码。直接可以使用。 希望对各位开发者有帮助。加油!
2020-05-01 - 白色调的新版本开发工具,没有以前的黑色调旧版本好用。你们觉得呢?
1.02.2004020白色调的新版本开发工具,没有以前的黑色调旧版本好用。你们觉得呢? 感觉白色调新版本工具的模块结构挺乱的,不好用。为什么不在黑色调旧版本上基础上做更好的细节优化呢
2020-04-24 - 希望平台方重视security.imgSecCheck检测严重不准。尊重开发者,别甩锅给我们。可否?
先不说 security.imgSecCheck 免费的图片内容安全API,检测结果是多么的不准确。导致我的小程序禁止“被搜索,永久”。这个锅,我很无奈的背了 那么付费增强版的也是不稳定的,相当不准。还好意思拿出来卖。我本来想买这个增强版服务,可是检测结果让我非常失望,这哪里敢买啊。我一直对腾讯系做产品的严谨性和责任心,是非常的敬佩和尊重。 但这个API接口,我已经反馈很多次了,让我非常失望。希望平台方重视这2个API,让开发者专注业务开发,省点心事。谢谢!!! 图片内容安全“增量调用(加强版)”。更不靠谱 这是小程序里的图片内容安全“增量调用(加强版)”。你可以扫码页面最下角的二维码。 https://developers.weixin.qq.com/community/servicemarket/detail/000a246b6fca70b76a896e6a25ec15 但是通过检测。我发现,这个加强版也有问题。非常不稳定。同样的正常图片,检测不通过。 尊重开发者,别甩锅给我们!谢谢 本人检测结果如下,请看: [图片] 正常图片【1】 [图片] 正常图片【1】,检测不通过 [图片] 正常图片【2】 [图片] 正常图片【2】,检测不通过 [图片] 涉黄图片【1】,检测通过 [图片] 涉黄图片【2】,测试两次,第1次检测通过 和 第2次检测不通过 [图片] [图片] 这么不稳定的图片内容安全API,你让开发者接入。然后说开发者小程序的图片涉黄。这,难道不是平台甩锅给开发者?请尊重开发者,别甩锅给我们!谢谢 希望平台方重视这2个API,让开发者专注业务开发,省点心事。谢谢!!!
2020-04-23 - security.imgSecCheck 这个图片内容审核API 有问题。平台还甩锅给开发者?
security.imgSecCheck 这个图片内容审核API 有问题,返回结果不稳定。平台还甩锅给开发者?
2020-04-16 - 云函数 调用imgSecCheck图片内容审核api问题,返回结果一直为null,怎么回事?
云函数 调用imgSecCheck图片内容审核api问题。返回结果一直为空 result: null 如下所示: {errMsg: "cloud.callFunction:ok", result: null, requestID: "4525eb0c-7fb2-11ea-9880-525400e7bfe4"}errMsg: "cloud.callFunction:ok"requestID: "4525eb0c-7fb2-11ea-9880-525400e7bfe4"result: null__proto__: Object请平台技术大神、开发者大神帮忙检查一哈。到底是什么问题?代码如下: 【云函数代码】 // 云函数入口文件 msgSecCheck 检测文本是否含有违法违规内容 const cloud = require('wx-server-sdk') // 云函数入口函数 exports.main = async (event, context) => { //初始化云函数 cloud.init({ env: event.env }) try { return await cloud.openapi.security.imgSecCheck({ media: { contentType: event.image, //图片路径 'image/png' value: event.imageBuffer } }) } catch (err) { // 错误处理 // err.errCode !== 0 } } 【小程序代码】 //【选择图片】 chooseImage() { var that = this //使手机发生较短时间的振动 wx.vibrateShort() wx.showActionSheet({ itemList: ['拍照', '相册',], success(res) { console.log(res.tapIndex) //拍照vounDemo if (res.tapIndex == 0) { //看选择相册那个代码,下面 } //手机相册 vounShow else if (res.tapIndex == 1) { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album'], success(res) { // tempFilePath可以作为img标签的src属性显示图片 // const tempFilePaths = res.tempFilePaths[0] console.log('打印取到的图片') console.log(res) var imgFileURL = res.tempFilePaths[0] wx.getFileSystemManager().readFile({ //读取文件信息 filePath: res.tempFilePaths[0], encoding: 'base64', success(res){ console.log('打印getFileSystemManager返回结果base64为') console.log(res.data) var base64 = res.data var arrayBuffer = wx.base64ToArrayBuffer(base64) console.log('打印图片本地文件ArrayBuffer内容') console.log(arrayBuffer) that.imgSecCheck(imgFileURL, arrayBuffer) //图片智能鉴黄 } }) } }) } }, fail(res) { console.log(res.errMsg) } }) }, //【图片智能鉴黄】 imgSecCheck: function (imgFileURL, arrayBuffer){ console.log('开始imgSecCheck方法') wx.showLoading({ title: '图片鉴黄检测中', //正在内容安全检测 }) //初始化云开发及设置其环境 wx.cloud.init({ env: app.globalData.env, traceUser: true }) wx.cloud.callFunction({ // 要调用的云函数名称 name: 'imgSecCheckPro', // 传递给云函数的event参数 data: { image: imgFileURL, imageBuffer: arrayBuffer } }).then(res => { // output: res.result === 3 console.log('打印云函数imgSecCheck返回结果为') console.log(res) wx.hideLoading()//隐藏 loading 提示框 if (res.result.errMsg == "openapi.security.imgSecCheck:ok"){ //内容正常 wx.navigateTo({ url: './../vounShow/vounShow?comeFromPAGE=' + 'introduction' + '&tempFilePaths=' + imgFileURL, }) } else{ //内容检测结果为不安全 this.showModal() } }).catch(err => { //错误 console.log('打印err结果为 错误') console.log(err) wx.hideLoading() //隐藏 loading 提示框 //this.showModal() }) }, 请平台技术大神、开发者大神帮忙检查一哈。到底是什么问题?
2020-04-16 - 虚拟支付问题?导致腾讯正在进入丢失开发者时代的一步。这是开发者的心声,大家接龙吧
虚拟支付问题,导致腾讯正在进入丢失开发者时代的一步。这是开发者的心声,大家接龙吧。 本来期望满满的学习微信小程序开发,很失望的是因为虚拟支付问题,现在又有点想离开微信小程序的开发者了。 大家怎么想?
2019-11-25 - 云开发数据库多表联表查询,怎么设计,代码怎么写?
请教大神: 云开发数据库是mongodb, 如果一个表userID,存储用户基本资料。另外一个表fans,为某个用户的粉丝表,那么我要遍历fan表,并且通过查询suserID的用户信息,展示出来。请问这样的多表/联表查询 ,怎么做??? 可以写个案例嘛?谢谢 【userID】表,如下 userID: { { id : 28991887728, img: "https://www...." name : liang, age : 12, }, { id : 28991887722, img: "https://www...." name : chen, age : 17, }, { id : 28991887711, img: "https://www...." name : tong, age : 21, }, } 【fans】表,如 fans: [ 28991887722, 28991887711 ] 然后在页面上中展示我的粉丝 ID号、名字、年龄。云开发要这么写?跪谢!
2019-10-08