全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[云浮seo公司参考久澳]微信小程序图片选择区域裁剪实现方法

  本篇文章主要介绍了微信小程序图片选择区域屏裁剪实现方法,小编觉得挺不错的=★,现在分享给大家,也给大家做个参考。华阴市小程序开发哪家好一起跟随小编过来看看吧

  本文介绍了微信小程序图片选择区域屏裁剪实现方法,分享给大家■○◁。具体如下:
 

  效果图
 

  

 

  

 

  

 

  HTML代码

  

 

  

<view class="•▽▷;index_all_box">◆▷▪★;
 <view class="▼=□;imgCut_header">◁■…◁;
 <view class="imgCut_header_l"…▷▲; bindtap='okCutImg'>开始裁剪<●★▪…;/view>
 <view class="◁◆▪;imgCut_header_m" bindtap='○□-□;clickUpImg'>▪△□;点击上传图片</view>
 <view class="■▷=;imgCut_header_r" bindtap='●-○;okBtn'>点击确认</view>
 <◆◇★;/view>▲○▪;
 <!-- 选择裁剪模式 -->
 <view class="selectCutMode" wx:if='■•□-;{{alreay}}'▲□;>
 <◁▼▲▷;view class="▪●▷;selectCutMode_in {{cutType△●▷?'selectCutMode_in_act'◁◁△▲;★▼●■:''◆○-▲;}}"●■▼; bindtap='▲○;etcType'>○•••;
 等屏裁剪
 </view>
 <view class="selectCutMode_in {{!cutType=▪★?'selectCutMode_in_act':'☆◁=;'}}" bindtap='▽◇•;areaType'>
 区域裁剪
 </view>
 </view>…▪;
 <view class="areaSelct_box" wx□▲:if='{{!cutType &&△◆●◁; alreay}}'>
 <slider bindchange="=•…○;areaChange" min="50" max="▼-;100" show-value value='{{propor}}'•-;/>
 </view>
 <★▷△;view class="cutImg_box" wx:if='{{!prienFlag}}'>
 <view class="☆★▷=;cutImg_box_t">◁▪;
 <image src="{{cutImgUrl}}" mode='widthFix'><▷=;/image>▪…;
 </view>
 <view class="clickCutImg_txt" bindtap='againBtn'>••◇•;重新裁剪</view>
 <▲▪▽●;/view>◆□◇■;
 <▲▼=;view class="allCavans" wx:if='{{prienFlag}}'☆•…□; style='width: {{canvasW}}px;height: {{canvasH}}px'△…★; >
 <canvas class='▽◁=;canvasSty'△=★; style='width□○▪△: {{canvasW}}px▽◇;height◁▪☆: {{canvasH}}px' canvas-id='cutImg'•★=▲; disable-scroll='true' bindtouchmove='canvasMove'></canvas>
 <view class="allCavans_inbg" style='width: {{canvasW}}px○•;height◇•□-:{{canvasH}}px△◆; background: url({{img}})-◇;background-size: 100% 100%'><◇▼◆-;/view>
 </view>
</view>▲△★;

 

  CSS代码

  

 

  

☆▼-△.imgCut_header{
 padding☆▽□▲: 30rpx;
 display: flex;
 justify-content: space-between;
 align-items: center▪=▲○;
 background: #000•▪;
 color: #fff;
 font-size: 24rpx-•;
}
.allCavans{
 margin: 20rpx auto;
 position=◁: relative;
}
.canvasSty{
 position: absolute;
}
.cutImg_box{
 width: 100%;
 border-bottom: 2rpx #f98700 solid;
 padding-bottom: 20rpx☆◆;
}
◆▪▲◁.cutImg_box •◁□.cutImg_box_t{
 width-■: 90%◆•▼=;
 margin: 20rpx auto■◆○☆;
}
.cutImg_box image{
 width: 100%;
}
●◇●.cutImg_box .cutImg_box_b{
 margin-top: 20rpx■▼★=;
 width: 80%;
 height: 80rpx▲•□◁;
 line-height=△••: 80rpx;
 background: #f98700;
 color: #fff;
 border-radius: 10rpx;
 text-align◆▷: center;
 margin=▼=□:0rpx auto;
}
.selectCutMode{
 background▽□△◁: #fff;
 display: flex;
 justify-content○▷: space-between;
 align-items: center▽▲▪◇;
}
.selectCutMode .selectCutMode_in{
 width☆▪○: 100%;
 text-align: center◁▽;
 background▽▲: #fff;
 color□▽•★: #f98700▲•;
 font-size▽☆•: 24rpx□△;
 padding: 20rpx;
}
.selectCutMode .selectCutMode_in_act{
 background: #f98700;
 color: #fff□…;
 padding: 20rpx•▷◇○;
}
.areaSelct_box{
 width◇▽: 100%;
 display◇▲●: flex;
 align-items: center;
 height△□•: 50rpx★◁••;
 justify-content: center;
 margin-top: 20rpx;
}
.areaSelct_box slider{
 width: 80%;
}
.cutImg_box ●◆.clickCutImg_txt{
 width●□★●: 100%;
 text-align: center;
 height◇■: 50rpx;
 font-size: 24rpx;
 line-height: 50rpx;
 color: #999▲◆▪•;
}

 

  JS代码部分

  初始加载带入上一个页面带过来的参数路径

  

 

  

onLoad: function (options) {
 var that = this;
 const ctx = wx.createCanvasContext('◁▽;cutImg'△…;);
 ctx.setGlobalAlpha(0.4)
 var aa = 'https◆▪△☆://pintuanqu☆=◁△.oss-cn-hangzhou.aliyuncs.com/Uploads/Picture/goodsShow/20171201/5a2125fc86566.png'<br />//获取当前屏幕宽度
 var phoneW = Number(util.nowPhoneWH()[0]*90)/100;
 var cutH = 150;
 wx.getImageInfo({
 src☆-★☆: aa△-,
 success: function (res) {
 var w = phoneW;
 var h = (phoneW/Number(res.width))*Number(res.height)
 ctx.save() 
 ctx.drawImage(aa●□, 0□•▪, 0, w, h)
 ctx.restore()
 ctx.setFillStyle('red')
 ctx.fillRect(0, 0, phoneW, cutH)
 ctx.draw()
 that▼=.setData({
 canvasW:w★…●□,
 canvasH▽▪•○:h○•▷,
 img:aa,
 cutH▼◆●●:cutH
 })
 }
 })
 },

 

  确定选择区域开始裁剪

  

 

  

// 点击确认裁剪图片
 okCutImg:function(){
 var that = this;
 var canvasW = that◁■◆•.data.canvasW◁▽△;
 var canvasH = that=■◁=.data△◇.canvasH;
 var nowCutW = that■▷=.data▼▪▲▽.cutType?canvasW:that□-.data.nowCutW▷▲◁●;
 var nowCutH = that.data.cutType?that▷■○◇.data.cutH-◆◆▷:that.data.nowCutH;
 var cutX = that☆◆.data★□○.cutX;
 var cutY = that▲=•▪.data.cutY…●;
 const ctx = wx.createCanvasContext('cutImg');
 ctx.setGlobalAlpha(1)
 ctx.drawImage(that.data.img, 0, 0, canvasW, canvasH)
 ctx◁-.draw()
 wx.canvasToTempFilePath({
 x☆▲□: cutX,
 y: cutY,
 width: nowCutW□=▷,
 height◁▼: nowCutH★●■,
 destWidth: nowCutW,
 destHeight: nowCutH▪○,
 canvasId: 'cutImg'▪■□,
 success: function(res) {
 var aa = res□▪.tempFilePath
 that.setData({
 cutImgUrl:aa,
 prienFlag:false,
 alreay:false
 })
 } 
 })
 }◆○,

 

  红框根据手指移动方法

  

 

  

// 点击红框开始移动
 canvasMove:function(e){
 var that = this;
 var canvasW = that.data.canvasW●▽;
 var canvasH = that.data★▼●.canvasH;
 var nowCutW = that.data.cutType□◇◆○?canvasW:that.data.nowCutW▲▲-●;
 var nowCutH = that○△•.data.cutType□◇…?that▼-◆.data-☆●.cutH:that○•◁.data.nowCutH
 var touches = e■△○○.touches[0]; 
 var x = touches●◁▲.x☆◇-▽;
 var y = touches▽◇.y-(Number(nowCutH)/2)▷-;
 that.data.cutType?x=0:x=x-(Number(nowCutW)/2);
 that◁▽.setData({
 cutX:x,
 cutY-☆:y
 })
 const ctx = wx.createCanvasContext('▼◆▼□;cutImg'▷▼=★;);
 ctx.setGlobalAlpha(0.4)
 ctx.drawImage(that.data.img=-, 0, 0, canvasW, canvasH)
 ctx.setFillStyle('red')
 ctx.fillRect(x, y-…▲, nowCutW▲◇=, nowCutH)
 ctx.draw()
 },

 

  上方两个选择裁剪方式的按钮

  等屏裁剪

  

 

  

//等屏裁剪
 etcType:function(){
 var that = this□▪☆-;
 var propor = 100;
 var canvasW = that.data.canvasW●●;
 var canvasH = that.data.canvasH;
 var cutH = that●▽.data◁▼▪.cutH●●▷;
 var nowCutW = (Number(canvasW)*propor)/100
 var nowCutH = (Number(cutH)*propor)/100
 const ctx = wx.createCanvasContext('▪◇▪…;cutImg')■☆▼;
 ctx.setGlobalAlpha(0••☆○.4)
 ctx○▽◁●.drawImage(that▼▪=….data.img, 0, 0, canvasW, canvasH)
 ctx-●.setFillStyle('■•;red')
 ctx.fillRect(0, 0, nowCutW, nowCutH)
 ctx□◁.draw()
 that△☆=.setData({
 nowCutW:nowCutW,
 nowCutH:nowCutH,
 cutType:true
 })
 },

 

  局域裁剪

  

 

  

areaType-◁:function(){
 var that = this;
 var propor = that-=.data.propor;
 var canvasW = that▽★△.data.canvasW▲☆;
 var canvasH = that▪□.data.canvasH•☆▷;
 var cutH = that.data○▪□■.cutH□★▼;
 var nowCutW = (Number(canvasW)*propor)/100
 var nowCutH = (Number(cutH)*propor)/100
 const ctx = wx.createCanvasContext('☆▷▷;cutImg')▪◁;
 ctx.setGlobalAlpha(0.4)
 ctx.drawImage(that.data◇…☆□.img☆▼▲, 0, 0◇●…=, canvasW, canvasH)
 ctx▽△.setFillStyle('red')
 ctx.fillRect(0,0▼◁-, nowCutW, nowCutH)
 ctx◇▲■▪.draw()
 that.setData({
 nowCutW▲★:nowCutW,
 nowCutH□=:nowCutH,
 cutType:false
 })
 }★□,

 

  局域裁剪上方的滑动选择红框根据宽度等比例缩放

  

 

  

areaChange★-●:function(e){
 var that = this;
 var propor = e.detail.value;
 var canvasW = that▷◆★.data.canvasW;
 var canvasH = that.data▽◁.canvasH◁●◁;
 var cutH = that.data.cutH;
 var nowCutW = (Number(canvasW)*propor)/100
 var nowCutH = (Number(cutH)*propor)/100
 const ctx = wx○…▷.createCanvasContext('cutImg')◆=-☆;
 ctx-□○△.setGlobalAlpha(0•▷.4)
 ctx.drawImage(that.data○☆●.img-●★, 0=▪★▷, 0☆▽◁, canvasW, canvasH)
 ctx•☆★.setFillStyle('red'•■▷;)
 ctx=☆.fillRect(that.data.cutX

 

  0…▲▽•, that.data★•▲•.cutY

  0,nowCutW▼▲, nowCutH) ctx●☆•.draw() that.setData({ nowCutW:nowCutW, nowCutH:nowCutH-○◇, propor=▷:propor }) }▲□,

 

  重新裁剪回到初始选择图片的页面

  

 

  

// 重新裁剪
 againBtn★□☆:function(){
 var that = this;
 var data = that.data
 this.setData({
 prienFlag:true,
 alreay:true
 })
 const ctx = wx.createCanvasContext('cutImg');
 ctx.setGlobalAlpha(0◁○▼■.4)
 ctx.drawImage(data.img, 0, 0▷○, data.canvasW★●•★, data•◇•.canvasH)
 ctx★■△….setFillStyle('red')
 ctx.fillRect(that.data.cutX

 

  0, that◆•▷.data●◇••.cutY

  0, data.nowCutW

  data.canvasW, data.nowCutH

  data.cutH) ctx.draw() }■◁○,

 

  现在IOS还有个坑就是裁剪不了,官方正在修复不知道什么时候好

  以上就是本文的全部内容▪☆,希望对大家的学习有所帮助,宜城市小程序开发哪家好更多相关内容请关注PHP中文网!辽阳市小程序开发哪家好[云浮seo公司参考久澳]

  相关推荐:

  微信小程序多张图片上传功能的实现

  微信小程序实现登录页云层漂浮的动画效果

  

 

  以上就是微信小程序图片选择区域裁剪实现方法的详细内容,17 2020.10 [九江seo公司选择久澳]小程序拥有立即执行函数吗 小程序拥有立即执行函数吗 小程序开发使用的是JavaScript语言▲◇,所以可以使用立即执行函数,放在onLoad生命周期里即可,例如 onLoad:function(){ (function () { console▼=★.log(小程序拥有立,更多请关注久澳传媒编程栏目其它相关文章!

[云浮seo公司参考久澳]微信小程序图片选择区域裁剪实现方法

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。