思路一對圖片進行縮放的算法是不是有問題?
思路一中用drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)這個方法在原圖上從坐標(sx,sy)截取寬為sw高為sw的一部分圖像,然后繪制到畫布上,貌似算法有問題,因為截取是從原圖(sx,sy)截取的,并沒有先對原圖進行縮放
思路一中用drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)這個方法在原圖上從坐標(sx,sy)截取寬為sw高為sw的一部分圖像,然后繪制到畫布上,貌似算法有問題,因為截取是從原圖(sx,sy)截取的,并沒有先對原圖進行縮放
2019-09-19
舉報
2019-10-14
我看的時候也覺得有問題。。。不知道是不是我的理解有問題,截取是從原圖(sx,sy)截取的,思路1正確的做法我覺得應該是把canvas的寬高等比縮小后原圖寬高的1/2減去縮小后的畫布寬高的1/2,截取下來的部分再放在畫布上(0,0,canvas.width,canvas.height)
2019-09-20
function?drawImageByScale(scale){ ????//?原圖尺寸 ????var?imageWidth=canvas.width;? ????var?imageHeight=canvas.height; ????if(scale>=1){ ????????//?原圖上截取的區域大小 ????????var?sw=imageWidth/scale; ????????var?sh=imageHeight/scale; ????????//?原圖上截取位置的坐標 ????????var?sx=imageWidth/2-sw/2; ????????var?sy=imageHeight/2-sh/2; ????????var?dx=0; ????????var?dy=0; ????????var?dw=canvas.width ????????var?dh=canvas.height ????}?else?{ ????????var?sw=imageWidth; ????????var?sh=imageHeight; ????????var?sx=0; ????????var?sy=0; ????????var?dx=canvas.width/2-sw/2*scale; ????????var?dy=canvas.height/2-sh/2*scale; ????????var?dw=sw*scale; ????????var?dh=sh*scale; ????} ????context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh) }