如何使用JavaScript和画布上实现图片裁剪的功能

  介绍

这篇文章将为大家详细讲解有关如何使用JavaScript和画布上实现图片裁剪的功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

帆布是一个可以让我们使用脚本绘图的标签,它提供了一系列完整的属性和方法。我们可以借此来实现图形绘制,图像处理甚至实现简单的动画和游戏制作。

帆布标签只有两个属性:宽度和高度,用来设定画布的宽和高,如果没有通过标签属性或者脚本来设置,默认为300 * 150,

好了,画布的介绍就先到这里,下面我们来看看JavaScript结合画布上实现图片的裁剪代码:

var selectObj=零;   函数ImageCrop (canvasId imageSource, x, y,宽度、高度){   画布var=$ (“#”;+ canvasId);   如果(画布。长度==0,,imageSource) {   返回;   }   函数canvasMouseDown (e) {   StopSelect (e);   canvas.css (“cursor",“default");   }   函数canvasMouseMove (e) {   var canvasOffset=canvas.offset ();   var pageX=e。pageX | | event.targetTouches [0] .pageX;   var pageY=e。pageY | | event.targetTouches [0] .pageY;   iMouseX=数学。地板(pageX canvasOffset.left);   iMouseY=数学。地板(pageY canvasOffset.top);   canvas.css (“cursor",“default");   如果(selectObj.bDragAll) {   canvas.css (“cursor",“move");   canvas.data (“drag",真实);   var残雪=iMouseX - selectObj.px;   残雪=残雪& lt;0 ?0:残雪;   mx=ctx.canvas。宽度——selectObj.w;   残雪=残雪比;mx吗?mx:残雪;   selectObj。x=残雪;   var cy=iMouseY - selectObj.py;   cy=cy & lt;0 ?0:cy;   我=ctx.canvas。高度- selectObj.h;   cy=cy比;我的吗?我:cy;   selectObj。y=cy;   }   (var=0;我& lt;4;我+ +){   selectObj。bHow[我]=false;   selectObj。iCSize[我]=selectObj.csize;   }//悬停在调整立方体   如果(iMouseX比;selectObj。x - selectObj。csizeh,,iMouseX & lt;selectObj。x + selectObj。csizeh,,   iMouseY祝辞selectObj。y - selectObj。csizeh,,iMouseY & lt;selectObj。y + selectObj.csizeh) {   canvas.css (“cursor",“pointer");   selectObj。bHow [0]=true;   selectObj。iCSize [0]=selectObj.csizeh;   }   如果(iMouseX比;selectObj。x + selectObj。w - selectObj。csizeh,,iMouseX & lt;selectObj。x + selectObj。w + selectObj。csizeh,,   iMouseY祝辞selectObj。y - selectObj。csizeh,,iMouseY & lt;selectObj。y + selectObj.csizeh) {   canvas.css (“cursor",“pointer");   selectObj。bHow [1]=true;   selectObj。iCSize [1]=selectObj.csizeh;   }   如果(iMouseX比;selectObj。x + selectObj。w - selectObj。csizeh,,iMouseX & lt;selectObj。x + selectObj。w + selectObj。csizeh,,   iMouseY祝辞selectObj。y + selectObj。h - selectObj。csizeh,,iMouseY & lt;selectObj。y + selectObj。h + selectObj.csizeh) {   canvas.css (“cursor",“pointer");   selectObj。bHow [2]=true;   selectObj。iCSize [2]=selectObj.csizeh;   }   如果(iMouseX比;selectObj。x - selectObj。csizeh,,iMouseX & lt;selectObj。x + selectObj。csizeh,,   iMouseY祝辞selectObj。y + selectObj。h - selectObj。csizeh,,iMouseY & lt;selectObj。y + selectObj。h + selectObj.csizeh) {   canvas.css (“cursor",“pointer");   selectObj。bHow [3]=true;   selectObj。iCSize [3]=selectObj.csizeh;   }   如果(iMouseX比;selectObj。x和,iMouseX & lt;selectObj。x + selectObj。w,,iMouseY祝辞selectObj。y,和iMouseY & lt;selectObj。y + selectObj.h) {   canvas.css (“cursor",“move");   }//拖动调整大小的立方体   var iFW、iFH iFX丰厚,mx,我;   如果(selectObj.bDrag [0]) {   iFX=iMouseX - selectObj.px;   一切损失=iMouseY - selectObj.py;   iFW=selectObj。w + selectObj。x - iFX;   iFH=selectObj。h + selectObj。y -丰厚;   canvas.data (“drag",真实);   }   如果(selectObj.bDrag [1]) {   iFX=selectObj.x;   一切损失=iMouseY - selectObj.py;   iFW=iMouseX - selectObj。px - iFX;   iFH=selectObj。h + selectObj。y -丰厚;   canvas.data (“drag",真实);   }   如果(selectObj.bDrag [2]) {   iFX=selectObj.x;   一切损失=selectObj.y;   iFW=iMouseX - selectObj。px - iFX;   iFH=iMouseY - selectObj。py -丰厚;   canvas.data (“drag",真实);   }   如果(selectObj.bDrag [3]) {   iFX=iMouseX - selectObj.px;   一切损失=selectObj.y;   iFW=selectObj。w + selectObj。x - iFX;   iFH=iMouseY - selectObj。py -丰厚;   canvas.data (“drag",真实);   }   如果(iFW比;selectObj。csizeh * 2,,iFH祝辞selectObj。csizeh * 2) {   selectObj。w=iFW;   selectObj。h=iFH;   selectObj。x=iFX;   selectObj。y=丰厚;   }   drawScene ();   }   函数canvasMouseOut () {   $(画布).trigger (“mouseup");   }   函数canvasMouseUp () {   selectObj。bDragAll=false;   (var=0;我& lt;4;我+ +){   selectObj。bDrag[我]=false;   }   canvas.css (“cursor",“default");   canvas.data(“选择”,{   x: selectObj.x,   y: selectObj.y,   w: selectObj.w,   h: selectObj.h   });   selectObj。px=0;   selectObj。py=0;   }   功能选择(x, y, w h) {   这一点。x=x;//初始位置   这一点。y=y;   这一点。w=w;//和大小   这一点。h=h;   这一点。px=x;//拖动计算额外的变量   这一点。py=y;   这一点。csize=4;//调整数据集的大小   这一点。csizeh=6;//调整立方体大小(徘徊)   这一点。bHow=(假的,假的,假的,假的);//悬停状态   这一点。iCSize=[这。csize,这。csize,这。csize this.csize);//调整立方体大小   这一点。bDrag=(假的,假的,假的,假的);//拖动状态   这一点。bDragAll=false;//拖动选择   }   Selection.prototype。画=function () {   ctx。null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何使用JavaScript和画布上实现图片裁剪的功能