背景
想为答题小程序中的模拟考试功能,增加一个弹出显示考试成绩海报的功能,可以让用户下载图片。使用了原生的 canvas 绘制,但是发现图片模糊。
参考了网上其他网友的方法,在画布上进行绘制的时候,先放大尺寸,然后在 scale 缩小,或者 setTransform 缩小,发现都没解决。另辟蹊径,最终使用 image 图片显示,解决了这个问题。
模糊的原因
这就牵扯出一个概念,物理分辨率 和 逻辑分辨率。现在设备基本上都是高分屏,通常说的我们说的某个手机分辨率是物理分辨率,比如 iPhone 13 Pro 的物理分辨率是 1170 x 2532,但是逻辑分辨率是 390 x 844,也就是说,物理分辨率是 3 倍于逻辑分辨率( dpr = 3)。我们一般操作都是基于逻辑分辨率,但是实际显示的时候,会根据 dpr 进行放大或者缩小。