canvas.width = canvasBox.clientWidth * 2; canvas.height = canvasBox.clientHeight * 2; canvas.style.width = canvas.clientWidth + 'px'; canvas.style.height = canvas.clientHeight * 'px'; w = canvas.width*(img.height/img.width); // console.log(w); ctx.drawImage(img, 0, 0, canvas.width , w);
即可以创建一个两倍于实际大小的canvas,然后用css样式把canvas限定在实际的大小。或者用github上的这个polyfill, 但是我试过了好像不太好用。