小程序生成海报的方法和注意事项

13 篇文章 1 订阅
5 篇文章 0 订阅

这两天开发了一个生成海报的功能,总结一下!

坑---------------------------------------------------------------

生成海报的图片路径必须是小程序本地的图片'../../imgs/Quiet.png',或者线上的HTTPS的图片,不然在真机上不显示哦!

生成海报之前一定要把图片先wx.downloadFile把需要用到的图片先下载下来再画哦,不然显示的可是空白哈!

海报适配:

try {
      resPhone = wx.getSystemInfoSync()
    } catch (e) {
      resPhone = {
        screenHeight: 667,
        screenWidth: 375
      }
    }
    let rpx = resPhone.screenWidth / 375;

然后把所有需要用到尺寸和位置的地方都*rpx就可以适配各种机型啦! 

文本换行:

canvasCtx.font = "bold 14px pingFang SC-Bold";//字体加粗
let str = '这是测试换行的文字内容!'
    var lineWidth = 0;
    var lastSubStrIndex = 0;
    var initHeight = 58;//距离顶部的位置
    for (let i = 0; i < str.length; i++) {
      lineWidth += canvasCtx.measureText(str[i]).width * rpx;
      if (lineWidth > 80 * rpx) {
        canvasCtx.fillText(str.substring(lastSubStrIndex, i), 35 * rpx, initHeight * rpx);//绘制截取部分
        initHeight += 20;//20为字体的高度
        lineWidth = 0;
        lastSubStrIndex = i;
      }
      if (i == str.length - 1) {//绘制剩余部分
        canvasCtx.fillText(str.substring(lastSubStrIndex, i + 1), 35 * rpx, initHeight * rpx);
      }
    }

画用户头像倒角:

var avatarurl_width = 47 * rpx;    //绘制的头像宽度
    var avatarurl_heigth = 47 * rpx;   //绘制的头像高度
    var avatarurl_x = 35 * rpx;   //绘制的头像在画布上的位置
    var avatarurl_y = 404 * rpx;   //绘制的头像在画布上的位置
    canvasCtx.save();
    canvasCtx.beginPath();
    canvasCtx.fill()
    canvasCtx.arc(avatarurl_width / 2 + avatarurl_x, avatarurl_heigth / 2 + avatarurl_y, avatarurl_width / 2, 0, Math.PI * 2, false);
    canvasCtx.clip();
    canvasCtx.drawImage(codeSrc2, avatarurl_x, avatarurl_y, avatarurl_width, avatarurl_heigth);
    canvasCtx.restore();
//codeSrc2是头像地址

画倒角矩形:

fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor, num) {
    //圆的直径必然要小于矩形的宽高          
    if (2 * radius > width || 2 * radius > height) { return false; }
    cxt.save();
    cxt.translate(x, y);
    //绘制圆角矩形的各个边  
    drawRoundRectPath(cxt, width, height, radius, num);
    cxt.fillStyle = fillColor || "#000";
    cxt.fill();
    cxt.restore();
  },

 保存图片到相册:

调用wx.canvasToTempFilePath成功后再调用wx.saveImageToPhotosAlbum传入path就ok了!

cover-view的坑-----

文档说明

增加一个好久没用的外发光的效果:box-shadow: 0rpx 0rpx 50rpx #F00;

注意:图片一定要是本地或者HTTPS的图片哦,要先下载成功后再画图哦!

如果有帮组到你,码字不易,请点个赞哦!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值