需求:

图片上传时,要求必须是720*720大小的图片,但是用camera拍出来的照片大小不固定,有的手机是720*720,有的就是1080*1080,还有480*480的

解决办法:

将图片转换成canvas,再在canvas中操作,最后将canvas转换图片导出

先大概贴一下html代码和js中的data

  <view style='height:292px;width:292px;'><camera wx:if="{{complated!=true}}" device-position="front" flash="off" class='face-image'></camera><!-- 给用户展现的图片 --><image wx:if="{{complated==true}}" class='face-image' src='{{faceUrl}}'></image><!-- 辅助裁剪的canvas,不显示给用户,因为720太大,界面放不下 --><canvas canvas-id='image-canvas' style='width:720px;height:720px;position:fixed;top:-10000px;left:-10000px;'></canvas></view>
data: {complated: false,   // 拍照是否完成faceUrl: ''         // 图片的临时路径
},

重点来了~

1.拍照

(检查拍到的图片大小是否是720*720,是的话,不用处理,如果不是,就调用我们自己写的图片处理函数loadTempImagePath进行处理)

const ctx = wx.createCameraContext()
// 拍照
ctx.takePhoto({quality: 'normal',success: (res) => {var tempImagePath = res.tempImagePath;   // 拍的照片的临时地址// 获取图片详情wx.getImageInfo({src: tempImagePath,success: res => {// 检查图片宽高等于720if (res.width == 720 && res.height == 720) {that.setData({complated: true, faceUrl: tempImagePath})return;}else{that.loadTempImagePath(tempImagePath)}},fail: fail => {console.log('获取拍照信息失败了')that.loadTempImagePath(tempImagePath)}})}})

2.图片处理函数loadTempImagePath

// 参数options是拍照获取到的临时路径
loadTempImagePath(options) {var that = this;// 矩形的位置 (设置了要求的大小:720)var image_x = 0;var image_y = 0;var image_width = 720;var image_height = 720;//过渡页面中,图片的路径坐标和大小var canvas = wx.createCanvasContext("image-canvas")canvas.drawImage(options, 0, 0, image_width, image_height)wx.showLoading({title: '数据处理中...',icon: 'loading',mask: true,duration: 10000})// 这里有一些很神奇的操作,总结就是MD拍出来的照片规格居然不是统一的过渡页面中,对裁剪框的设定canvas.strokeStyle = '#f4f8f9';canvas.strokeRect(image_x, image_y, image_width, image_height)canvas.draw(true, function(){wx.canvasToTempFilePath({ //裁剪对参数canvasId: "image-canvas",// x: image_x, //画布x轴起点// y: image_y, //画布y轴起点// width: image_width, //画布宽度// height: image_height, //画布高度// destWidth: image_width, //输出图片宽度// destHeight: image_height, //输出图片高度success: function (res) {console.log('图片处理成功了',res)that.setData({complated: true, faceUrl: res.tempFilePath})wx.hideLoading()},fail: function (e) {wx.hideLoading()wx.showToast({title: '出错啦...',icon: 'loading'})}})})},

微信小程序-将图片裁剪成规定的尺寸相关推荐

  1. 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片

    将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片: 方法1:使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (b ...

  2. 微信小程序image图片预览时不显示(后缀问题!)

    微信小程序image图片预览时不显示(后缀问题!) ".PNG"是不行滴!!! ".png"才可以!!! 刚刚用了两张图片是截下来的,后缀是".PNG ...

  3. Java实现微信小程序校验图片是否含有违法违规内容

    文章目录 1.Java实现微信小程序校验图片是否含有违法违规内容(security.imgSecCheck) 2.接口文档简述 3.Java实现对接接口 4.压缩图片(Thumbnails) 5.整合 ...

  4. 微信小程序实现图片是上传、预览功能

    本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法,分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 1.可以调用相机也可以从本地相册选择 2.本地实现 ...

  5. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能

    最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助. 1,小程序端: 在wxml文件中: 删除 点击上传作业 在js文件中: Page({ / ...

  6. uniapp 微信小程序开发 图片上传压缩

    uniapp 微信小程序开发 图片上传压缩 安卓上传图片并压缩 思路 全部代码 安卓上传图片并压缩 由于后端接口对图片的大小有限制,所以在上传图片是需要压缩处理: uni.chooseImage({c ...

  7. 微信小程序封装图片合成水印

    微信小程序封装图片合成水印 js /components/Watermark/index.js // components/Watermark/index.js Component({/*** 组件的 ...

  8. 微信小程序背景图片全屏显示

    微信小程序背景图片全屏显示 很多人在写小程序界面的时候希望背景图片是全屏覆盖显示的(包括顶部导航栏,如下图),那该如何实现呢? 以下是实现代码: wxml代码: <view class=&quo ...

  9. 微信小程序渲染图片报错:[渲染层网络层错误] Failed to load local image resource

    微信小程序渲染图片报错解决:[渲染层网络层错误] Failed to load local image resource 背景 通过用户点击上传图片,通过res.tempFilePaths拿到用户上传 ...

最新文章

  1. Nature指数2021亚太区排名:7所中国高校挺进前10!看看有没有你的母校?
  2. python if语句能否判断中文,Python之判断语句(if语句)
  3. 戴尔:发力互联互通 构建世界基础设施中心
  4. php 浮点数转字符串,php浮点数和字符串
  5. SQL Server - 在SQL Server中创建ASSEMBLY
  6. [C++] 构造函数 which is of non-class type
  7. List的ToLookup 分组方法
  8. 修改键盘映射、交换按键
  9. STM32工作笔记0100---认识设备的IMEI号和SN号的区别
  10. 【服务器数据恢复】IBM某型号服务器VMware虚拟机误删除的数据恢复案例
  11. python怎么算一元二次方程_Python实现求解一元二次方程的方法示例
  12. 模电和数电复习资料//2021-2-18
  13. PHP对接语音验证码接口代码示例
  14. 机器学习——回归中的相关度与R平方值及其应用
  15. ndnSIM学习(八)——examples之ndn-simple.cpp每个函数逐行剖析
  16. Javaweb——水果系统基础版
  17. Git常用操作速查,没有人比我更简单!!
  18. 使用原生table合并单元格
  19. 汽车模具设计与制造技术
  20. e-chart学习小记---legend的赋值却不显示

热门文章

  1. MES系统电子看板,真正实现车间可视化管理
  2. 认沽期权看图轻松理解
  3. docker拉取镜像查看版本
  4. 华为Mate30系列海外发布:Pro 5G版售价近万元,余承东力荐自家应用框架
  5. 树莓派不讲武德,自研双核MCU Pico,STM32哭晕在厕所!
  6. pb中Datawindow中每页打印固定行
  7. 【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part4检索人物关系实现
  8. 2019中国农业大学计算机考研经验贴
  9. 《The Complete Effect and HLSL Guide》翻译连载(二)
  10. DRM (Direct Rendering Manager) 的发展历史