主要步骤:
1)图像的加载,上篇blog里有www.php.cn/html5-tutorial-358646.html,必须注意apache的配置,否则getImageData()会有安全问题而无法运行!!
2)核心:两个图像矩阵间的映射,
设o为圆心,则变换后的点A‘对应的是原图像的A点(此乃放大的效果!!!本实验取放大倍数为2)
立即学习“前端免费学习笔记(深入)”;
3)为了简便起见,没有采用线性插值的方法,直接取整获得A点的坐标。
for (var j=0;j=0&&k1<=4*image.height*image.width){ imagedata2.data[k+0]=imagedata1.data[k1+0]; imagedata2.data[k+1]=imagedata1.data[k1+1]; imagedata2.data[k+2]=imagedata1.data[k1+2]; imagedata2.data[k+3]=255; // console.log('x:'+x+'y:'+y); }
4)为使镜子凸显,设定边缘处点为一黑点(即rgb均为0)
function isOn(x0,y0,x,y,r){//放大镜边缘
if((x0-x)*(x0-x)+(y0-y)*(y0-y)==r*r)
return true;
else
return false;
} if (isOn(x0,y0,i,j,r)){
imagedata2.data[k+0]=0;
imagedata2.data[k+1]=0;
imagedata2.data[k+2]=0;
imagedata2.data[k+3]=255;
}5)越界或者换行的点(若存在),忽略之(取原值即可)
else{
imagedata2.data[k+0]=imagedata1.data[k+0];
imagedata2.data[k+1]=imagedata1.data[k+1];
imagedata2.data[k+2]=imagedata1.data[k+2];
imagedata2.data[k+3]=255;
}6)放大镜半径的外界设定
同样利用canvas以及onclick函数,如下所示:
 放大镜半径为
下面是完整代码:
canvas图像处理 canvas放大镜
 放大镜半径为
Attention:
1)记得将canvas1的宽高设置和图片大小相同,如不同,还要在进行以此计算,比较麻烦;
效果如下:












