没有找到合适的框架,自己写的,代码比较糙,这是效果图
直接复制就可以啦~
<input type="file" class="sc_an" id="file_upload"/>
<div class="sc_tu_view" id="jm" style="position: relative">
<img src="" id="sc_tu_xs"/>
</div>
<div class="canv" id="jmn">
</div>
$("#file_upload").change(function () {
var _URL = window.URL || window.webkitURL;
var aa, img, dataURL;
var fileObj = $(this)[0];
var file = $(this)["0"].files;
var $file = $(this);
for (let i = 0; i < file.length; i++) {
if (fileObj && fileObj.files && fileObj.files[0]) {
dataURL = _URL.createObjectURL(fileObj.files[0]);
} else {
dataURL = $file.val();
var imgObj = document.getElementById("sc_tu_xs");
imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = dataURL;
}
}
if ((aa = this.files[0])) {
img = new Image();
img.onload = function () {
var wid = this.width;
var hei = this.height;
if ($("#jm").find("canvas").length >= 1) {
$("#jm").find("canvas").remove();
}
canvas = document.createElement('canvas');
canvas.id = "hc";
canvas.width = wid;
canvas.height = hei;
canvas.style.position = "absolute";
canvas.style.left = "0";
canvas.style.top = "0";
document.getElementById("jm").appendChild(canvas);
oCanvas = document.getElementById("hc");
var imgObj = new Image();
imgObj.src = dataURL;
//待图片加载完后,将其显示在canvas上
imgObj.onload = function(){
var ctx = oCanvas.getContext('2d');
ctx.drawImage(this, 0, 0);//this即是imgObj,保持图片的原始大小
var idx=0;
var aX,bX,cX,aa;
var aY,bY,cY,bb;
var tempxmin = 0;
var tempxmax = 0;
var tempymin = 0;
var tempymax = 0;
var XY = [];
oCanvas.onmousedown=function (ev) {
idx++;
var xy = [];
//鼠标按下的位置
var oldX = ev.offsetX;
var oldY = ev.offsetY;
if(idx==1 ) {
tempxmax = oldX;
tempxmin = oldX;
tempymax = oldY;
tempymin = oldY;
}
if (oldX<tempxmin){
tempxmin = oldX;
}
if (oldX>tempxmax){
tempxmax = oldX;
}
if (oldY<tempymin){
tempymin = oldY;
}
if (oldY>tempymax){
tempymax = oldY;
}
xy[0]=oldX;
xy[1]=oldY;
XY[idx-1]=xy;
// alert(XY);
if(Math.abs(cX-oldX)<=20&&Math.abs(cY-oldY)<=20){
oldX=cX;
oldY=cY;
}
ctx.beginPath();
ctx.stroke();
if(idx%2!=0){
aX = oldX;
aY = oldY;
if(idx==1){
cX = oldX;
cY = oldY;
}
}else{
bX = oldX;
bY = oldY;
}
if(idx!=1){
ctx.moveTo(bX,bY);
ctx.lineTo(aX,aY);
ctx.strokeStyle = "red";//线条的颜色
ctx.stroke();
if(idx>=4){
if(Math.abs(cX-oldX)<=20&&Math.abs(cY-oldY)<=20){
ansd();
oldX =0; oldY = 0;
bX = 0; bY = 0;
XY = [];
idx = 0;
}
}
}
};
function ansd() {
ctx.beginPath();
for(var u=0;u<XY.length-1;u++){
ctx.lineTo(XY[u][0],XY[u][1]);
}
ctx.closePath();
ctx.fillStyle="rgb(192, 80, 77,.5)";
ctx.fill();
}
}
};
img.src = _URL.createObjectURL(aa);
}
});
可能写的比较乱,有什么简单的交流一下哇~