微信小程序 图片处理:压缩、上传、审核
一、图片压缩
这API目前从小程序开发工具没法调试
得用真机调试
// 压缩开始
wx.compressImage({src: tempFilePaths[0], // 图片路径quality: 0, // 压缩质量success: res => {console.log("压缩前:", tempFilePaths[0])console.log("压缩后:", res.tempFilePath)},fail: error => {console.log("error", error)}
});
// 压缩结束
二、图片上传和审核
方法一:把文件传到云存储,云函数根据fileID获取buffer(得及时删除文件)
小程序端js代码(负责图片上传):
console.log('my-image' + tempFilePaths[0].match(/\.[^.]+?$/)[0])// 在此添加内容审核机制
wx.cloud.uploadFile({cloudPath: 'my-image' + tempFilePaths[0].match(/\.[^.]+?$/)[0],filePath: tempFilePaths[0],success: res => {wx.showToast({icon: 'none',title: '正在加载图片...',})console.log('上传成功:', res)wx.cloud.callFunction({name: 'checkImg',data: {contentType: 'image/jpg',fileID: res.fileID}}).then(res => {console.log("检测结果", res.result);if (res.result.errCode == 0) {this.setData({bgPic: tempFilePaths[0],picChoosed: true});} else {this.setData({bgPic: '../../image/ban.jpg',picChoosed: true});wx.showToast({icon: 'none',title: '图片含有敏感信息,换张图吧~',})}})},fail: e => {console.error('上传失败:', e)}
})
云函数checkImg:(云函数配置看这里)
// 云函数入口函数 图片下载和鉴别
exports.main = async(event, context) => {const fileID = event.fileIDconst res = await cloud.downloadFile({fileID: fileID,})const buffer = res.fileContenttry {var result = await cloud.openapi.security.imgSecCheck({media: {contentType: event.contentType,value: buffer}});return result} catch (err) {return err}
}
方法二:小程序端图片转换base64,直接把buffer传到云函数处理(就是有点卡)
小程序端js:
// 审核开始
console.log("内容审核机制启动...");
console.log(res);// 转base64
let base64 = wx.getFileSystemManager().readFileSync(res.tempFilePath, 'base64')
// console.log(base64)
// console.log("access_token =", this.data.accessToken);
console.log("图片地址 = ", tempFilePaths[0])//调用云函数
wx.cloud.callFunction({// 云函数名称name: 'checkImg',// 传给云函数的参数data: {contentType: 'image/jpg',value: base64},}).then(res => {// this.setData({// picPassed: res.result.pic_passed// });console.log("errCode: ", res.result.errCode);console.log("errMsg: ", res.result.errMsg);// 图片不合法if (res.result.errCode == 87014) {this.setData({bgPic: '../../image/ban.jpg'});} else {this.setData({bgPic: tempFilePaths[0]});}console.log('Img validation check: ', this.data.picPassed);console.log('Original Img: ', tempFilePaths[0]);}).catch(console.error);// 审核结束
云函数:
// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV
})exports.main = async(event, context) => {try {console.log('check img...');console.log('contentType :', event.contentType);console.log('value :', Buffer.from(event.value));var result = await cloud.openapi.security.imgSecCheck({media: {contentType: event.contentType,value: Buffer.from(event.value)}});return result} catch (err) {return err}
}
微信小程序 图片处理:压缩、上传、审核相关推荐
- 小程序 图片上传php后台,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...
微信小程序图片选择.上传到服务器.预览(php)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...
- php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...
微信小程序图片选择.上传到服务器.预览(PHP)实现实例 小程序实现选择图片.预览图片.上传到开发者服务器上 后台使用的tp3.2 图片上传 请求时候的header参考时可以去掉(个人后台验证权限使用 ...
- uniapp小程序图片前端压缩上传
目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...
- 微信小程序 图片旋转后上传
今天遇到一个很有意思的问题,在开发电子签名的时候,生成的图片角度有问题,需要进行旋转.然而js里并没有旋转图片的api,所以突发奇想把canvas生成的图片再插入进一个新的canvas容器进行编辑旋转 ...
- 微信小程序用户头像编辑上传
微信小程序用户头像编辑上传 近期接触了一个小程序项目,需要可以修改用户头像,默认获取用户当前微信头像,点击头像,可调用手机照相机或者本地相册,更换图片. html代码如下: js代码:
- 微信小程序开发之文件上传下载应用场景(附Demo源码)
微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...
- 微信小程序云开发-批量上传文件到云储存空间
微信小程序开发 自己最近在玩微信小程序,准备记录一些自己遇到的,网络上没有对应教程(也许是自己没找到),或者是教程比较少的问题,然后给出自己的解决方案 目录 微信小程序开发 问题 一.云储存是什么? ...
- 微信小程序云开发实现上传文件和预览下载文件
微信小程序云开发实现上传文件和预览下载文件 一.前言 目前微信提供了一个接口 wx.chooseMessageFile 它能让用户从聊天记录里面选择一个或者多个文件,然后返回它的一些信息,列入文件的p ...
- 微信小程序+SpringBoot实现文件上传与下载
微信小程序+SpringBoot实现文件上传与下载 1.文件上传 1.1 后端部分 1.1.1 引入Apache Commons FIleUpload组件依赖 1.1.2 设置上传文件大小限制 1.1 ...
- 微信小程序java中文乱码_如何解决微信小程序显示中文无法上传或者出现乱码的问题?...
今天小编给大家讲解如何解决微信小程序显示中文无法上传或者出现乱码的问题?有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的. 在formData中对文字进行编码,使用encodeURI() ...
最新文章
- 2010年—2018年中国电商成交额排名
- Django之forms组件
- 校讯通近期爆发短信诈骗:取消不可能 那如何规范
- 总结libevent安装方法
- linux内网安装git,一键安装GitLab7在RHEL6.4上
- 虚拟化关键技术及解决方案
- oracle非管理员锁表,oracle默认管理员的帐号和密码以及密码修改和解除锁定
- Ubuntu学习 history
- WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法...
- 地图比例尺与空间分辨率之间的关系_宝马如何查看自己的车机系统是不是idrive几的?宝马主机与idrive系统和导航地图之间的对应关系!...
- 计网 - 计算机网络开篇
- xp计算机重启记录,WinXP电脑关机后自动重启是什么原因?
- Axure中继器使用
- Make Your First GAN With PyTorch:1.PyTorch基础
- python画八卦图
- python预测股票估值_4指数加权平均预测未来股票价格
- 英语知识系列:按发音规律重排的英语音标
- contains( )方法
- stm32毕业设计 单片机智能扫地机器人
- 【tgcalls】python 调用及Source 和 track
热门文章
- 中|元宇宙龙头股歌尔自废,资本为何还在追捧
- html代码在线获取,在线客服系统html代码的获取与生成方式 - 快商通
- u2 接口 服务器硬盘,M.2、U.2谁更好?主流硬盘接口都有哪些?
- java读取服务器文件_JAVA读取服务器端文件
- Window10 运行 mvn报错:NB: JAVA_HOME should point to a JDK not a JRE 解决
- python excel操作 bom_Python Pandas比较BOM表数据
- 使用matplotlib动态打印图片(RGB图片)
- Linux Emacs 配置c++
- 密码安全攻防技术精讲
- fiddler 抓包下载钉钉直播回放