问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微信小程序怎么截图

发布网友 发布时间:2022-04-21 06:03

我来回答

4个回答

懂视网 时间:2022-04-22 22:36

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

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

效果图

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还有个坑就是裁剪不了,官方正在修复不知道什么时候好

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

使用angular完成Message组件编写

使用EasyUI如何绑定Json数据源

使用Electron构建React+Webpack桌面应用(详细教程)

热心网友 时间:2022-04-22 19:44

手机截屏是指将手机当前的页面截取下来并保存为图片的功能,截屏的方法有以下几种:
1.通过快捷键截屏:同时按住Home键+电源键(部分早期机器需要同时按住返回键和Home键)。
2.助理菜单截屏:设置-辅助功能-敏捷度和互动-助理菜单开启-点击屏幕上的蓝色圆形加4个白色方框图标-向下滑动-截屏;
3.手势截屏 :设置-高级功能-手掌滑动截屏-滑动开关,滑动时请保持掌沿与屏幕接触。
4.快捷图标截屏:下拉屏幕顶帘菜单-向左滑动快捷图标-点击【截取屏幕】快捷图标即可。
5.S PEN截屏(仅限Note系列机器):将S Pen悬浮至手机屏幕上方,按下S Pen按钮,打开浮窗指令后,点击截屏编写-保存即可。
注:不同型号手机可使用的截屏方法可能不同。

热心网友 时间:2022-04-22 21:02

微信小程序可以直接用手机打开后,直接用手机截图即可的。

热心网友 时间:2022-04-22 22:37

手机截屏是指将手机当前的页面全屏截取下来并保存为图片的功能,三星手机截屏的方法有以下几种:
方法一:同时按住屏幕底部的Home键和电源键,保持大约2~3秒,看到屏幕边框闪动松手即截屏成功。
方法二:待机-应用程序-设定--动作与手势-手掌动作-【手掌动作】滑块开启-【截取屏幕】滑块开启已开启。(S5手机该选项为【手掌滑动以捕捉】-开启)-直接用手的侧面从右至左(从左至右)划过屏幕即可截图。
方法三:待机-应用程序-设定--辅助功能-(敏捷度和互动)-助理菜单-【助理菜单】滑块开启-白色方框选择【截屏】即可。
若使用的是Note系列手机,还可以通过手写笔进行截图。操作:取出手写笔-按住手写笔上的按键并点住屏幕即可截屏,截屏后点击右上角对号保存即可。
若方法正确仍无法截屏,可以备份重要数据(联系人、照片、备忘录等)恢复出厂设置尝试。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 泥蒿炒腊肉的家常做法 扩写:竹外桃花三两枝,春江水暖鸭先知。 蒌蒿满地芦芽短,正是河豚欲上时。 泥蒿的泥蒿菜肴 泥蒿根怎么清洗 泥蒿染指怎么洗净? 摘完茼蒿后,怎么去除手上的黑色? 摘野泥蒿的手洗不干净,怎么办 泥蒿搞到手上为什么是黑的 摘了泥蒿的手怎样洗干净 Adobe证书有用吗? Adobe国际认证是什么样认证? Adobe认证有国家认证吗? ps有哪些证书 Adobe国际认证到底有没有用?是“真香”还是“真菜”? 现在考Adobe国际认证证书有用吗? Adobe国际认证的三大综合证书如何获取? adobe国际认证怎么考? 洋葱种植,采收时间是什么时候? 洋葱什么时间种,洋葱的种植时间 洋葱的种植技术 为什么微信小程序截图拼接不了 微信小程序被拦截怎么办 搜索小程序截图就给钱? 众接龙小程序怎么导出截图 404 Not Found 微信小程序怎么取消拦截 为什么微信里面没有小程序呢? 微信小程序做海报用什么软件?做微信公众号的软件有哪些 求每个整点电脑自动截屏并保存图像的bat或小程序 小程序分享封面图小于5;4尺寸怎么截取? 请教小程序有API接口可以调用截屏功能吗 微信小程序性能怎么优化 小程序里的图片可以下载吗? 月经不调有哪些原因? 月经不调的原因有哪些? 月经不调有哪些原因啊? 月经失调的症状有哪些 月经不调有什么症状? 月经紊乱有哪些症状 月经紊乱的护理常识 月经不调有哪些原因呢?