怎么在小程序中实现一个图片预览裁剪插件

  介绍

本篇文章给大家分享的是有关怎么在小程序中实现一个图片预览裁剪插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

wxml:

& lt; canvas 隐藏=& # 39;{{hide_canvas}} & # 39;, id=& # 39; cover-preview& # 39;, bindtouchstart=& # 39; canvas_start& # 39;, bindtouchmove=& # 39; canvas_move& # 39;, bindtouchend=& # 39; canvas_end& # 39;, disable-scroll=& # 39;真正的# 39;,canvas-id=& # 39; cover-preview& # 39;比;   & lt;才能cover-view  catchtap=& # 39; upload_bg& # 39;, id=& # 39; croper-sure& # 39;祝辞确定& lt;/cover-view>   & lt;才能cover-view  catchtap=& # 39; cancel_croper& # 39;, id=& # 39; croper-cancel& # 39;在取消& lt;/cover-view>   & lt;才能cover-view  id=& # 39; croper& # 39;祝辞& lt;/cover-view>   ,& lt;/canvas>

注意:画布里面一定要用封面视图,否则无法覆盖帆布

js:

const  ctx =, wx.createCanvasContext (& # 39; cover-preview& # 39;);   var  start_position =,{},//移动图片时手指起始坐标   var  tempFilePath;//图片路径   var  tempWidth;//图片初始宽度   var  tempHeight;//图片初始高度   var  old_x =, 0;//图片初始x坐标   var  old_y =, 0;//图片初始y坐标   var  _touches =, 1;//触屏的手指数   var  old_scale =, 1;//原始放大倍数   var  new_scale =, 1;//新的放大倍数   var  is_move =, false;//是否移动   var  bg_url;   页面({   数据:{   ,hide_canvas:真的,//绘图层显示控制变量   },//选择并将图片输出到画布上   change_cover:函数(){   var 才能;that =,;   wx.showModal({才能   ,,,标题:& # 39;提示& # 39;,   ,,,内容:& # 39;更改我的封面& # 39;,   ,,,confirmColor: & # 39; # 39 bae8& # 39;   ,,,成功:function  (res), {   ,,,if  (res.confirm), {   ,,,,   ,,,,   ,,,,wx.chooseImage ({   ,,,,,数:,1,,//,默认9   ,,,,,sizeType:,(& # 39;原始# 39;,,& # 39;压缩# 39;],,//,可以指定是原图还是压缩图,默认二者都有   ,,,,,sourceType:,(& # 39;专辑# 39;,,& # 39;相机# 39;],,//,可以指定来源是相册还是相机,默认二者都有   ,,,,,成功:,function  (res0), {   ,,,,,,   ,,,,,,tempFilePath =, res0.tempFilePaths [0];   ,,,,,,that.setData ({   ,,,,,,,hide_canvas:,假的,   ,,,,,,,//,edit_url: tempFilePath   ,,,,,,})   ,,,,,,wx.getImageInfo ({   ,,,,,,,src:, tempFilePath,   ,,,,,,,成功:,function  (res), {   ,,,,,,,,//,console.log (res.width)   ,,,,,,,,//,console.log (res.height)   ,,,,,,,,tempWidth =, res.width;   ,,,,,,,,tempHeight =, res.height;   ,,,,,,,,ctx.drawImage (tempFilePath 0, 0,, 375年,res.height/res.width * 375);   ,,,,,,,,ctx.draw ();   ,,,,,,,}   ,,,,,,})   ,,,,,,   ,,,,,}   ,,,,})   ,,,},else  if  (res.cancel), {   ,,,,console.log(& # 39;用户点击取消& # 39;)   ,,,}   ,,}   })才能   },   ,//监听手指触摸事件,并判断是移动还是缩放,并记录初始状态   ,canvas_start:函数(e) {//才能,console.log (e);   var 才能;touches =, e.touches.length;   如果才能(==touches  1) {   ,,_touches =, 1;   ,,start_position =, {, x: e.touches [0]。x,, y,, e.touches [0] .y,,时间戳:e.timeStamp}   }才能else 如果(==touches  2) {   ,,_touches =, 2;   ,,start_position =, {, x: e.touches [0]。x,, y,, e.touches [0] .y, x1:, e.touches [1]。x,, y1:, e.touches [1] .y,,时间戳:,e.timeStamp }   }{其他才能   ,,_touches =, 1;   ,,}   },   ,//监听手指移动事件,并做出相应调整   ,canvas_move: function  (e), {//才能,console.log (e);   var 才能;touches =, e.touches.length;   if 才能;(_touches ==, 1,,,, e.timeStamp 作用;start_position.timeStamp 祝辞,150),{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在小程序中实现一个图片预览裁剪插件