在使用 canvas 对图片进行编辑导出图片以后发现图片和原图相比变得模糊了ios
canvas 画图线条变粗canvas
该问题在 PC 下面并不会产生,缘由是移动端如今基本都是 Retina 屏(高倍屏),当在二倍屏下的时候,会以实际像素的两个像素点来描述一个像素,这个时候 canvas 在屏幕下面就等于占据了双倍的空间,就和图片被放大了两倍同样,因此通过 canvas 编辑的图片会变得模糊code
canvas 画线的方式并非从头开始画的,而是从无限细的一像素的中位线的位置开始画的,而后左边占一半右边占一半的方式来画一像素的线条,这个时候计算机是不会绘制小余 1 像素的,因此这个时候就会天然的向左右延伸,这个时候就会出现两个像素的线条了图片
实际渲染倍率 = devicePixelRatio / backingStoreRatio;
devicePixelRatio 设备像素比,表明用几个像素点的宽度来显示一个像素的宽度io
backingStorePixelRatio 表明了使用几个像素来存储一个像素的信息,在 ios6 当中这个值为 2,因此这个时候和屏幕像素比率为 1,也就是实际渲染倍率为 1,这个时候不作任何处理也不会出现变模糊的状况渲染
// 设置画布的实际渲染大小,只是简单的对画布进行缩放 canvas.style.width = canvas.width; canvas.style.height = canvas.height; // 以实际渲染倍率来放大画布 canvas.width = canvas.width * ratio; canvas.height = canvas.height * ratio;