思路一對(duì)圖片進(jìn)行縮放的算法是不是有問題?
思路一中用drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)這個(gè)方法在原圖上從坐標(biāo)(sx,sy)截取寬為sw高為sw的一部分圖像,然后繪制到畫布上,貌似算法有問題,因?yàn)榻厝∈菑脑瓐D(sx,sy)截取的,并沒有先對(duì)原圖進(jìn)行縮放
思路一中用drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)這個(gè)方法在原圖上從坐標(biāo)(sx,sy)截取寬為sw高為sw的一部分圖像,然后繪制到畫布上,貌似算法有問題,因?yàn)榻厝∈菑脑瓐D(sx,sy)截取的,并沒有先對(duì)原圖進(jìn)行縮放
2019-09-19
舉報(bào)
2019-10-14
我看的時(shí)候也覺得有問題。。。不知道是不是我的理解有問題,截取是從原圖(sx,sy)截取的,思路1正確的做法我覺得應(yīng)該是把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){ ????????//?原圖上截取的區(qū)域大小 ????????var?sw=imageWidth/scale; ????????var?sh=imageHeight/scale; ????????//?原圖上截取位置的坐標(biāo) ????????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) }