在小程序的分享功能中,截屏是一个比较常见的需求。而截屏不只是截取当前页面,还要将二维码放进去以方便用户长按识别。从营销方面来看,这样可以说是一举两得了。要实现的效果如下:

实话说,一开始收到这个需求是懵b的,完全没有任何思路。试过用a标签的download属性,但是只能在电脑端才能下载…一路坎坎坷坷,四处碰壁,虐得我体无完肤…后来终于在慢慢摸索中发现了生的希望。

1 背景

需要截屏的页面是在h5页面中实现的,通过webview嵌进去小程序

2 步骤

1.将html元素转化为canvas;
2.将canvas转化为base64的图片;
3.调用微信api保存网络图片到本地;
4.保存成功后返回原页面

总之!!截屏功能是在h5页面中实现的,而图片的保存是在一个新的小程序页面。

3 思路

新建一个canvas,将原界面的html转成canvas,生成base64图片,再通过canvas.getContext(‘2d’).drawImage()分别把原界面和二维码画上去,将base64传到后台返回一张网络图片,把这张图片通过url从webview传到小程序,同时跳转到新的小程序页面,最后利用微信api保存图片到本地,保存图片成功后返回上一层页面。

4 实现

截屏:使用html2canvas插件

1.将html转成canvas,生成base64图片

2.将base64通过接口获取网络地址

保存:调用微信api

以上!!

微信小程序截屏保存图片相关推荐

  1. 微信小程序长按保存图片

    微信小程序长按保存图片 wxml部分 <image data-url="{{item}}" bindlongtap="longPressSaveImg " ...

  2. 微信小程序 - 骨架屏

    骨架屏 - "与其等待网络加载,不如提前给点暗示" 注:不适用复杂交互效果 演示 示例解释以及使用全在index.wxml中,观看需了解组件使用. 示例下载:微信小程序-骨架屏演示 ...

  3. 微信小程序全屏背景图

    微信小程序全屏背景图,解决你在设置过程中出现的多次背景图重复出现的问题 wxml <view class="container" style="height: {{ ...

  4. 电脑版微信小程序全屏显示方法,手机横屏方法。

    电脑版微信小程序全屏显示方法: 在app.json中加入:"resizable": true 注意要与"pages"同级,网上有许多错误方法! 手机横屏方法: ...

  5. 微信小程序-首屏视频加载

    项目场景: 微信小程序开发: 实现小程序首页视频预加载功能 1.获取设备的宽和高度 2.小程序video的使用 获取设备的宽和高度 // 获取设备的宽和高度getsize() {let that = ...

  6. 微信小程序 长按图片不出现菜单_微信小程序长按保存图片

    微信浏览器打开h5页面如果是img标签的话,长按会弹出保存图片的选项.但是微信小程序里面不可以,需要自己写这个功能. 这个功能有两个点,一个是长按,一个是保存图片到本地. 1. 微信小程序关于图片长按 ...

  7. 微信小程序白屏问题总结一二

    最近时不时有用户反馈,小程序白屏,多数以华为畅享机型,iphone6P机型,荣耀8为主,主要表现为小程序刚进去时显示正常,来回切换几个页面后,个别页面就出现白屏啦. 期初以为是代码问题,JS报错,导致 ...

  8. 微信小程序全屏轮播(仿北京环球)

    空闲时间看见北京环球的微信小程序,感觉首页效果挺好看的,所以就动手做了一下.仅供参考! 文章目录 1.效果预览 2.代码实现 2.1 HTML 2.2 CSS 2.3 JSON 2.4 JS 1.效果 ...

  9. 微信小程序---骨架屏实现,实现起来超级简单

    一.什么是骨架屏? 骨架屏是页面的一个空白版本,通常会在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容.通常在小程序中,我们需要手工维护骨架屏的代码,当业务变 ...

最新文章

  1. Hadoop基础-网络拓扑机架感知及其实现
  2. 如何学习Python开源项目代码
  3. 2.redis配置详解
  4. 史上最详细Docker安装Mysql 带每一步详图及解释 并教你Docker 打印容器日志!!!相信值得你的阅读!!!
  5. 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(下)
  6. 优化器(AdaGrad,AdaDelta,RmsProp,Adam,Nadam,Nesterovs,Sgd,momentum)
  7. QToolButton设置图标位置
  8. HH SaaS电商系统的商品系统设计
  9. Vim winmanager文件浏览自动更新
  10. mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
  11. 深入理解JAVA虚拟机——个人阅读笔记
  12. php抓包分析工具下载,Wireshark(抓包分析工具) V3.2.1 32位多国语言安装版
  13. Java并发(一)——线程安全的容器(上)
  14. Vitamix和Blendtec破壁料理机哪个更高端?
  15. iOS用代码判断设备是否越狱
  16. java pptx转图_Java 将PPT转换为图片格式
  17. 微信支付v3 AEAD_AES_256_GCM解密JS版本代码及验证 javascript
  18. ios和安卓测试包发布网站http://fir.im的注册与常用功能
  19. 养生品茶的30个心得
  20. 使用Python和selenium的Chromedriver模拟登陆爬取网站信息(beautifulsoup)

热门文章

  1. ActionContext.getContext()的几种用法
  2. getActivity()和getContext()的介绍
  3. linux下的arp命令详解
  4. 【XSY-Contest2618.Problem A】抢夺
  5. 关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
  6. grease monkey setTimeout
  7. 变量定义和声明的区别(整理)
  8. android 加密手机功能,怎么为安卓手机加密
  9. python 自动登录股票,python2自动读取股票数据示例
  10. js 数组操作的push pop shift unshift 等方法