在使用 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;