canvas真机下scale不起作用,无法缩放显示的问题
发布于 5 年前 作者 liuping 19112 次浏览 来自 问答

transform: scale(0.2);

在真机下不起作用,在图片和小程序码合成应用中,需要实现在页面上显示320*640导出尺寸720*1280,测试发现导出是根据画布大小决定的,canvas如果按实际导出尺寸设置就会超过屏幕体验非常不好。

尝试决绝方法1:

js里设置ctx.scale(0.2, 0.2)

结果只是吧画布里的内容缩放了图片导出还是画布大小,而且因为缩小了内容导致画布很大地方空白。

尝试方法2:

设置实际导出大小*2,但是这样图片会模糊

wx.canvasToTempFilePath({
  width: w,
  height: h,
  destWidth: w * 2,
  destHeight: h * 2,
  canvasId: 'canvas_course',
  success: (res) => {
    this.data.canvas = res.tempFilePath
    wx.hideLoading()
  }
})

尝试方法3:

设置画布的transform: scale属性,在开发工具上测试是可以达到预期效果,但是在真机上scale不起作用

canvas {
  width: 720px;
  height: 1280px;
  transform: scale(0.2);
  transform-origin: left top;
}
2 回复

我不知道你的目的和我一样,为了放大图片,让保存的图片能更清晰一点,然后尝试各种缩放,但是我后面发现,canvas保存的图片在开发者工具里面确实会模糊,就按照canvas的宽高保存的,但是手机上还算清晰,我电脑上就设置canvas的宽高是300 * 400,电脑上保存出来的图片就是300 * 400,但是手机上保存下来是866 * 1152,还可以接受

回到顶部