微信小程序:canvas合成图片缩放显示问题

发布于 2022-09-11 15:09:56 字数 85 浏览 15 评论 0

测试发现transform: scale(0.2);真机情况下无效,如何实现页面上显示比如宽180高320然后导出大小是宽720高1280

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故笙诉离歌 2022-09-18 15:09:57

缩放问题,之前我也遇到过,
drawShareImg(){

  const _this = this;
  console.log('time1',new Date())
  wx.showLoading({
    title: `绘图中...`,
    mask: true,
  })
  var reStr = '';
  const ctx = wx.createCanvasContext('myCanvas')
  // 画背景图
  ctx.save();
  ctx.drawImage('../../images/sharepic.png', 0, 0, _this.canvasWidth*_this.dpr, _this.canvasHeight*_this.dpr);
  ctx.restore();

  // 画头像
  ctx.save();
  ctx.arc(180*_this.dpr*2, 141.95* _this.dpr*2, 71 * _this.dpr*2, 0, Math.PI*2, true);
  ctx.clip();
  ctx.drawImage(_this.shareData.avater, 109*_this.dpr*2, 71*_this.dpr*2, 141*_this.dpr*2, 141*_this.dpr*2);
  ctx.restore();

  // 画昵称
  ctx.save();
  ctx.setFontSize(50 * _this.dpr*2)
  ctx.setFillStyle('#380D5A');
  reStr = _this.measureText(_this.shareData.nickname,50*_this.dpr*2)*_this.dpr*2 > 70*_this.dpr*2 ? _this.shareData.nickname.slice(0, 5)+'...' : _this.shareData.nickname;
  ctx.fillText(reStr,290*_this.dpr*2,165* _this.dpr*2);
  ctx.restore();

  // 画描述
  _this.drawInfo('国庆七天共走了',_this.shareData.walkNum,'步',330,ctx);
  _this.drawInfo('平均每一步值',_this.shareData.walkMoney,'元',430,ctx);
  _this.drawInfo('超过了全国',_this.shareData.percent,'的用户',530,ctx);

  // 江湖人称
  ctx.save();
  ctx.drawImage(_this.shareData.rankPic,(_this.canvasWidth - 820*2)/2*_this.dpr, 650*_this.dpr*2, 820*_this.dpr*2, 550*_this.dpr*2);
  ctx.restore();

  // 画二维码
  ctx.save();
  ctx.drawImage(_this.shareData.codePic,(_this.canvasWidth *0.73)*_this.dpr, 1280*_this.dpr*2, 430/2*_this.dpr*2, 430/2*_this.dpr*2);
  ctx.restore();

  ctx.draw(_this.methods.canvasToPic());

}

实现的主要思路是将canvas画布弄大点,然后生成的时候 缩小点,然后就不会糊
秋心╮凉 2022-09-18 15:09:57

canvas导出图片大小是跟canvas一致的(全canvas保存)。如果要大一点的话,你可以另外再建一个canvas并隐藏起来。

比如:一个180320的canvas显示,一个7201280的canvas用来绘制实际大小的图片并隐藏(设置绝对定位,left:-720px;top-1280px;)。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文