微信小程序点击生成朋友圈分享图(遇到的坑)


Posted in Javascript onJune 17, 2020

上个月boss交给我个微信小程序的活,告诉我只需要负责前端页面这块,问我多久做完,于是我不知天高地厚的说 一礼拜就能完工,哈哈哈,果然,现实总是那么无情的来打脸了。。。磨磨蹭蹭一共用了将近3个礼拜才算完事。

今天就来总结下遇到的各种坑好了~~~

由于做的是仿照包你说的小程序,这里就借用包你说的截图好啦

(这个做出来是模拟器跟真机上都会显示生成的图片的,鬼知道是为啥。。)

微信小程序点击生成朋友圈分享图(遇到的坑)微信小程序点击生成朋友圈分享图(遇到的坑)

唔,不废话了,直接上代码好啦

A:wxml(一定要加上image标签,如果你没有加的话,那么即使图片生成了,在页面上也是不会显示的,问过大神之后我才知道我之前一直没弄出来是因为我没加image标签)

<view hidden="{{maskHidden}}" class="mask"></view> 
<view class='canvas-box'>
 <canvas style="width:750rpx; height:940rpx;" canvas-id="myCanvas"/>
 <image src='{{imagePath}}'></image> 
</view>

B:wxss(canvas-box的样式运行出来不会受影响,就是千万别写top:0;一定要往下点,要不然会遮盖住原页面本身的东西,导致原页面button按钮全没效果)

.mask
{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0,1);
opacity: 0; 
display: flex;
justify-content: center; 
align-items: center;
}
 .canvas-box
 {
 position: fixed;
 top: 999999rpx;left: 0
 }

C:js重点来了(实话实说,我也是照着网上的demo改的,不懂的千万不要来找我问,跪求,本人渣渣一枚。。。)

//share.js
Page({
 data: {
 imagePath: "/images/shareimg_bg.jpg",
 imageTx: "http://img0.imgtn.bdimg.com/it/u=1079555585,1801783759&fm=27&gp=0.jpg",
 imageEwm: "/images/ewm.jpg",
 maskHidden: true,
 },
 onLoad: function (options) {
 // 页面初始化 options为页面跳转所带来的参数
 var size = this.setCanvasSize();//动态设置画布大小
 // this.createNewImg();
 //创建初始化图片
 },
 //适配不同屏幕大小的canvas 生成的分享图宽高分别是 750 和940,老实讲不知道这块到底需不需要,然而。。还是放了,因为不写这块的话,模拟器上的图片大小是不对的。。。
 setCanvasSize: function () {
 var size = {};
 try {
  var res = wx.getSystemInfoSync();
  var scale = 750;//画布宽度
  var scaleH = 940 / 750;//生成图片的宽高比例
  var width = res.windowWidth;//画布宽度
  var height = res.windowWidth * scaleH;//画布的高度
  size.w = width;
  size.h = height;
 } catch (e) {
  // Do something when catch error
  console.log("获取设备信息失败" + e);
 }
 return size;
 },
 //将1绘制到canvas的固定
 settextFir: function (context) {
 let that=this;
 var size = that.setCanvasSize();
 var textFir = "发了一个红包";
 console.log(textFir);
 context.setFontSize(24);
 context.setTextAlign("center");
 context.setFillStyle("#fee6b5");
 context.fillText(textFir, size.w / 2, size.h * 0.25);
 context.stroke();
 },
 //将2绘制到canvas的固定
 settextSec: function (context) {
 let that = this;
 var size = that.setCanvasSize();
 var textSec = "长按识别小程序,领奖金";
 context.setFontSize(14);
 context.setTextAlign("center");
 context.setFillStyle("#fee6b5");
 context.fillText(textSec, size.w / 2, size.h * 0.88);
 context.stroke();
 },
 //将canvas转换为图片保存到本地,然后将图片路径传给image图片的src
 createNewImg: function () {
 var that = this;
 var size = that.setCanvasSize();
 var context = wx.createCanvasContext('myCanvas');
 var path = "/images/shareimg_bg.jpg";
 var imageTx = that.data.imageTx;
 var imageEwm = that.data.imageEwm;
 var imageZw = "/images/xcxewm.png";
 context.drawImage(path, 0, 0, size.w, size.h);
 context.drawImage(imageTx, size.w / 2 - 25, size.h * 0.02, size.w * 0.14, size.w * 0.14);
 context.drawImage(imageEwm, size.w / 2 - 60, size.h * 0.32, size.w * 0.33, size.w * 0.33);
 context.drawImage(imageZw, size.w / 2 - 25, size.h * 0.7, size.w * 0.14, size.w * 0.14);
 this.settextFir(context);
 this.settextSec(context);
 console.log(size.w, size.h)
 //绘制图片
 context.draw();
 //将生成好的图片保存到本地,需要延迟一会,绘制期间耗时
 wx.showToast({
  title: '生成中...',
  icon: 'loading',
  duration: 2000
 });
 setTimeout(function () {
  wx.canvasToTempFilePath({
  canvasId: 'myCanvas',
  success: function (res) {
   var tempFilePath = res.tempFilePath;
   console.log(tempFilePath);
   that.setData({
   imagePath: tempFilePath,
   canvasHidden: false,
   maskHidden: true,
   });


//将生成的图片放入到《image》标签里
   var img = that.data.imagePath;
   wx.previewImage({
   current: img, // 当前显示图片的http链接
   urls: [img] // 需要预览的图片http链接列表
   })
  },
  fail: function (res) {
   console.log(res);
  }
  });
 }, 2000);
 },

})

以上,出来的效果是酱紫的 (渣渣实在不知道要怎么把头像和二维码画成圆角矩形的和圆形的了,还好产品大大不挑剔,感谢)

微信小程序点击生成朋友圈分享图(遇到的坑)

当然 ,如果有小可爱能解决这个问题的话,还望不吝指教~~~

总结

到此这篇关于微信小程序点击生成朋友圈分享图的文章就介绍到这了,更多相关小程序 朋友圈分享图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
flash javascript之间的通讯方法小结
Dec 20 Javascript
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
基于jquery的15款幻灯片插件
Apr 10 Javascript
js获取网页高度(详细整理)
Dec 28 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
新手快速学习JavaScript免费教程资源汇总
Jun 25 Javascript
javascript高级模块化require.js的具体使用方法
Oct 31 Javascript
小程序文字跑马灯效果
Dec 28 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
vue开发简单上传图片功能
Jun 30 Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 Javascript
React 高阶组件HOC用法归纳
Jun 13 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 #Javascript
vue移动端的左右滑动事件详解
Jun 17 #Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 #Javascript
vue-iview动态新增和删除的方法
Jun 17 #Javascript
vue iview实现动态新增和删除
Jun 17 #Javascript
vue如何搭建多页面多系统应用
Jun 17 #Javascript
vue2.0实现列表数据增加和删除
Jun 17 #Javascript
You might like
用php和MySql来与ODBC数据连接
2006/10/09 PHP
php中的一个中文字符串截取函数
2007/02/14 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
php判断当前操作系统类型
2015/10/28 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python在线运行代码助手
2016/07/15 Python
pandas通过loc生成新的列方法
2018/11/28 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
学生干部的自我评价分享
2014/01/18 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
婚育证明样本
2015/06/16 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python