微信小程序对上传的图片进行裁剪,让图片截取某个部分

  1. 背景:在进行人脸采集,需要上传图片,后端需要的格式是图片大小200kb,这个时候就需要我们上传图片之后进行裁剪。

  2. 实现思路

    A   uni.chooseMedia打开相册获取图片路径(uni.chooseImage(OBJECT) | uni-app官网 (dcloud.net.cn))

    B  将获取到的图片路径传入wx.cropImage对图片进行裁剪(wx.cropImage(Object object) | 微信开放文档 (qq.com))

    C 将裁减后的图片路径通过uni.uploadFile上传到服务器生成网络地址(uni.uploadFile(OBJECT) | uni-app官网 (dcloud.net.cn))

  3. 出现图片裁剪

  4. 代码如下:
     

    wx.chooseMedia({
    			count: 1, // 默认9
    			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
    			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
    			success: function (res) {
    				wx.cropImage({
    					src: res.tempFiles[0].tempFilePath, // 图片路径
    					cropScale: '1:1', // 裁剪比例
    					success: function (res) {
    						console.log(res, '我来了')
    						if (!/(\.jpg|\.png|\.jpeg)$/.test(res.tempFilePath.toLowerCase())) {
    							wx.showToast({
    								title: '请上传jpg、png或jpeg格式的照片',
    								icon: 'none',
    								duration: 2000
    							});
    							return;
    						}
    						var tempFilePaths = res.tempFilePath;
    						// 压缩图片
    						wx.compressImage({
    							src: tempFilePaths,
    							quality: 80, // 压缩质量 0-100
    							success: function (compressedRes) {
    								var compressedFilePath = compressedRes.tempFilePath;
    								// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
    								wx.showLoading()
    								wx.uploadFile({
    									url: app.globalData.url +
    										'/content/interface_faceAcquisition_upload.shtml',
    									filePath: compressedFilePath,
    									header: {
    										"Content-Type": "multipart/form-data",
    									},
    									name: 'imgFile',
    									formData: {
    										'ownerId': self.data.id
    									},
    									success: function (res) {
    										console.log('上传', res)
    										wx.hideLoading()
    										if (res.statusCode == 200) {
    											var result = JSON.parse(res.data);
    											if (result.code == 200) {
    												wx.navigateTo({
    													url: '../successResults/successResults?img=' +
    														compressedFilePath
    												})
    											} else {
    												wx.showToast({
    													title: result.message,
    													icon: 'none'
    												})
    											}
    
    										} else {
    											wx.showToast({
    												title: '上传出错',
    												icon: 'none'
    											})
    										}
    										//do something
    									},
    									fail(res) {
    										wx.hideLoading()
    									}
    								})
    							},
    							fail(compressError) {
    								console.log('压缩错误', compressError)
    							}
    						})
    					}
    
    				})
    
    
    
    			}
    		})

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值