如何缩放<canvas>
标签中包含的照片?
特别是我想在用户点击的位置放大照片。
变焦并不难:
img.width = img.width + 100;
img.height = img.height + 100;
ctx.drawImage(img,0,0,img.width,img.height);
问题在于我还希望将缩放图像置于点击点的中心,就像普通放大镜一样。
答案 0 :(得分:3)
数据强>
R
Cw
,Ch
Iw
,Ih
Ix
,Iy
Pcx
,Pcy
Pox
,Poy
Prx
,Pry
方式强>
Pox = Pcx - Ix
,Poy = Pcy - Iy
Prx = Pox * R
,Pry = Poy * R
top = (Ch / 2) - Pry
,left = (Cw / 2) - Prx
ctx.drawImage(img, left, top, img.width, img.height)
<强>实施强>
// resize image
I.w *= R;
I.h *= R;
// canvas pos -> image pos
Po.x = Pc.x - I.left;
Po.y = Pc.y - I.top;
// old img pos -> resized img pos
Pr.x = Po.x * R;
Pr.y = Po.y * R;
// center the point
I.left = (C.w / 2) - Pr.x;
I.top = (C.h / 2) - Pr.y;
// draw image
ctx.drawImage(img, I.left, I.top, I.w, I.h);