小程序canvas生成海报图片压缩和失真问题解决
本文于847天之前发表,文中内容可能已经过时。
微信小程序实现canvas按照原图等比例不失真绘制海报图,防止模糊
我这里的场景是收款二维码+收款背景图。
绘制二维码
我这里绘制二维码使用的 wxapp-qrcode ,也可以使用weapp-qrcode,基本都一样,详细代码不过多累赘,这里主要说下适配不同屏幕大小的canvas。
1 | onLoad: function (options) { |
绘制背景图
动态设置图片的高度和宽度
在小程序布局中,如果图片不是固定高度和高度,但image
设置的是固定的高度和宽度,这时候原始图片相对image
设置的固定高度和宽度不是等比例大小,那么这张图片就会变形,变的不清晰。这时就可以使用下面的等比例缩放的方式缩放图片,让图片不变形。或者通过image
的bindload
方法动态的获取图片的高度和宽度,动态的设置图片的高度和宽度,是图片布局的高度和宽度和原始图片的高度和宽度相等。
图片等比例缩放工具
1 | //Util.js |
工具库使用
1 | <image bindload="imageLoad" src="../test.png"/> |
1 | import Util from '../common/Util' |
绘制背景图
用上面的方法动态设置图片宽高,解决失真问题
1 | import Util from '../../libs/Util' |
合成海报/收款码
这里使用Promise
分别去绘制二维码和背景图。
1 | // 收款码 |
效果图