`
jzhua2006
  • 浏览: 304648 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java 对指定位置进行图片切割

阅读更多
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

String Pic = (String) request.getParameter("p");
int PointX = Integer.parseInt(request.getParameter("x"));
int PointY = Integer.parseInt(request.getParameter("y"));
int CutWidth = Integer.parseInt(request.getParameter("w"));
int CutHeight = Integer.parseInt(request.getParameter("h"));

// 图片宽度
int PicWidth = Integer.parseInt(request.getParameter("pw"));

// 图片高度
int PicHeight = Integer.parseInt(request.getParameter("ph"));

response.setContentType("image/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
HttpSession session = request.getSession();

String picPath = Pic;

String path = request.getRealPath(picPath);

ServletOutputStream responseOutputStream = response.getOutputStream();

cut(path, responseOutputStream, CutWidth, CutHeight, PointX, PointY,
PicWidth, PicHeight);

// 以下关闭输入流!
responseOutputStream.flush();

responseOutputStream.close();
}


/**
* 图片切割
* @param srcImageFile 图片地址
* @param responseOutputStream servlet输出流
* @param w 切割宽度
* @param h 切割高度
* @param x1 开始x结点(left)
* @param y1 开始y结点(top)
* @param sw 图片宽度
* @param sh 图片高度
*/
public void cut(String srcImageFile,ServletOutputStream responseOutputStream, int w, int h, int x1,
int y1, int sw, int sh) {
try {

// http://localhost:8080/ImpCra/createServlet?p=Sunset.jpg&x=117&y=201&w=61&h=50&pw=300&ph=400

Image img;

ImageFilter cropFilter;
// 读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));

if (sw >= w && sh >= h) {

Image image = bi.getScaledInstance(sw, sh, Image.SCALE_DEFAULT);

// 剪切起始坐标点
int x = x1;
int y = y1;

int destWidth = w; // 切片宽度
int destHeight = h; // 切片高度

// 图片比例
double pw = sw;
double ph = sh;

double m = (double) sw / pw;
double n = (double) sh / ph;

int wth = (int) (destWidth * m);
int hth = (int) (destHeight * n);
int xx = (int) (x * m);
int yy = (int) (y * n);

// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)

cropFilter = new CropImageFilter(xx, yy, wth, hth);
img = Toolkit.getDefaultToolkit().createImage(
new FilteredImageSource(image.getSource(), cropFilter));

BufferedImage tag = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
g.drawImage(img, 0, 0, null); // 绘制缩小后的图
g.dispose();

// 输出为文件
ImageIO.write(tag, "JPEG", responseOutputStream);

}

} catch (Exception e) {
e.printStackTrace();
}
}


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JavaScript 图片切割效果(带拖放、缩放效果) </title>
</head>
<body>

<style type="text/css">
#rRightDown,#rLeftDown,#rLeftUp,#rRightUp,#rRight,#rLeft,#rUp,#rDown{position:absolute;background:#F00;width:5px; height:5px; z-index:500; font-size:0;}
#dragDiv{border:1px solid #000000;}
</style>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="50%">
    <div id="bgDiv" style="width:400px; height:500px;">
        <div id="dragDiv">
          <div id="rRightDown" style="right:0; bottom:0;"> </div>
          <div id="rLeftDown" style="left:0; bottom:0;"> </div>
          <div id="rRightUp" style="right:0; top:0;"> </div>
          <div id="rLeftUp" style="left:0; top:0;"> </div>
          <div id="rRight" style="right:0; top:50%;"> </div>
          <div id="rLeft" style="left:0; top:50%;"> </div>
          <div id="rUp" style="top:0; left:50%;"> </div>
          <div id="rDown" style="bottom:0;left:50%;"></div>
        </div>
    </div>
    </td>
    <td><div id="viewDiv" style="width:200px; height:200px;"> </div></td>
  </tr>
</table>
<script>

var $ = function (id) {
    return "string" == typeof id ? document.getElementById(id) : id;
};

var isIE = (document.all) ? true : false;

function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = fnHandler;
}
};

function removeEventHandler(oTarget, sEventType, fnHandler) {
    if (oTarget.removeEventListener) {
        oTarget.removeEventListener(sEventType, fnHandler, false);
    } else if (oTarget.detachEvent) {
        oTarget.detachEvent("on" + sEventType, fnHandler);
    } else {
        oTarget["on" + sEventType] = null;
    }
};


var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

Object.extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}

//拖放程序
var Drag = Class.create();
Drag.prototype = {
  //拖放对象,触发对象
  initialize: function(obj, drag, options) {
    var oThis = this;

this._obj = $(obj);//拖放对象
this.Drag = $(drag);//触发对象
this._x = this._y = 0;//记录鼠标相对拖放对象的位置
//事件对象(用于移除事件)
this._fM = function(e){ oThis.Move(window.event || e); }
this._fS = function(){ oThis.Stop(); }

this.SetOptions(options);

this.Limit = !!this.options.Limit;
this.mxLeft = parseInt(this.options.mxLeft);
this.mxRight = parseInt(this.options.mxRight);
this.mxTop = parseInt(this.options.mxTop);
this.mxBottom = parseInt(this.options.mxBottom);

this.onMove = this.options.onMove;

this._obj.style.position = "absolute";
addEventHandler(this.Drag, "mousedown", function(e){ oThis.Start(window.event || e); });
  },
  //设置默认属性
  SetOptions: function(options) {
    this.options = {//默认值
Limit: false,//是否设置限制(为true时下面参数有用,可以是负数)
mxLeft: 0,//左边限制
mxRight: 0,//右边限制
mxTop: 0,//上边限制
mxBottom: 0,//下边限制
onMove: function(){}//移动时执行
    };
    Object.extend(this.options, options || {});
  },
  //准备拖动
  Start: function(oEvent) {
//记录鼠标相对拖放对象的位置
this._x = oEvent.clientX - this._obj.offsetLeft;
this._y = oEvent.clientY - this._obj.offsetTop;
//mousemove时移动 mouseup时停止
addEventHandler(document, "mousemove", this._fM);
addEventHandler(document, "mouseup", this._fS);
//使鼠标移到窗口外也能释放
if(isIE){
addEventHandler(this.Drag, "losecapture", this._fS);
this.Drag.setCapture();
}else{
addEventHandler(window, "blur", this._fS);
}
  },
  //拖动
  Move: function(oEvent) {
//清除选择(ie设置捕获后默认带这个)
window.getSelection && window.getSelection().removeAllRanges();
//当前鼠标位置减去相对拖放对象的位置得到offset位置
var iLeft = oEvent.clientX - this._x, iTop = oEvent.clientY - this._y;
//设置范围限制
if(this.Limit){
//获取超出长度
var iRight = iLeft + this._obj.offsetWidth - this.mxRight, iBottom = iTop + this._obj.offsetHeight - this.mxBottom;
//这里是先设置右边下边再设置左边上边,可能会不准确
if(iRight > 0) iLeft -= iRight;
if(iBottom > 0) iTop -= iBottom;
if(this.mxLeft > iLeft) iLeft = this.mxLeft;
if(this.mxTop > iTop) iTop = this.mxTop;
}
//设置位置
this._obj.style.left = iLeft + "px";
this._obj.style.top = iTop + "px";
//附加程序
this.onMove();
  },
  //停止拖动
  Stop: function() {
//移除事件
removeEventHandler(document, "mousemove", this._fM);
removeEventHandler(document, "mouseup", this._fS);
if(isIE){
removeEventHandler(this.Drag, "losecapture", this._fS);
this.Drag.releaseCapture();
}else{
removeEventHandler(window, "blur", this._fS);
}
  }
};

//缩放程序
var Resize = Class.create();
Resize.prototype = {
  //缩放对象
  initialize: function(obj, options) {
    var oThis = this;

this._obj = $(obj);//缩放对象
this._right = this._down = this._left = this._up = 0;//坐标参数
this._scale = 1;//比例参数
this._touch = null;//当前触发对象

//用currentStyle(ff用getComputedStyle)取得最终样式
var _style = this._obj.currentStyle || document.defaultView.getComputedStyle(this._obj, null);
this._xBorder = parseInt(_style.borderLeftWidth) + parseInt(_style.borderRightWidth);
this._yBorder = parseInt(_style.borderTopWidth) + parseInt(_style.borderBottomWidth);

//事件对象(用于移除事件)
this._fR = function(e){ oThis.Resize(e); }
this._fS = function(){ oThis.Stop(); }

this.SetOptions(options);

this.Limit = !!this.options.Limit;
this.mxLeft = parseInt(this.options.mxLeft);
this.mxRight = parseInt(this.options.mxRight);
this.mxTop = parseInt(this.options.mxTop);
this.mxBottom = parseInt(this.options.mxBottom);

this.MinWidth = parseInt(this.options.MinWidth);
this.MinHeight = parseInt(this.options.MinHeight);
this.Scale = !!this.options.Scale;
this.onResize = this.options.onResize;

this._obj.style.position = "absolute";
  },
  //设置默认属性
  SetOptions: function(options) {
    this.options = {//默认值
Limit: false,//是否设置限制(为true时下面mx参数有用)
mxLeft: 0,//左边限制
mxRight: 0,//右边限制
mxTop: 0,//上边限制
mxBottom: 0,//下边限制
MinWidth: 50,//最小宽度
MinHeight: 50,//最小高度
Scale: false,//是否按比例缩放
onResize: function(){}//缩放时执行
    };
    Object.extend(this.options, options || {});
  },
  //设置触发对象
  Set: function(resize, side) {
var oThis = this, resize = $(resize), _fun, _cursor;
if(!resize) return;
//根据方向设置 _fun是缩放时执行的程序 _cursor是鼠标样式
switch (side.toLowerCase()) {
case "up" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleUpRight(e); }else{ oThis.SetUp(e); } };
_cursor = "n-resize";
break;
case "down" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleDownRight(e); }else{ oThis.SetDown(e); } };
_cursor = "n-resize";
break;
case "left" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleLeftUp(e); }else{ oThis.SetLeft(e); } };
_cursor = "e-resize";
break;
case "right" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleRightDown(e); }else{ oThis.SetRight(e); } };
_cursor = "e-resize";
break;
case "left-up" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleLeftUp(e); }else{ oThis.SetLeft(e); oThis.SetUp(e); } };
_cursor = "nw-resize";
break;
case "right-up" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleRightUp(e); }else{ oThis.SetRight(e); oThis.SetUp(e); } };
_cursor = "ne-resize";
break;
case "left-down" :
_fun = function(e){ if(oThis.Scale){ oThis.scaleLeftDown(e); }else{ oThis.SetLeft(e); oThis.SetDown(e); } };
_cursor = "ne-resize";
break;
case "right-down" :
default :
_fun = function(e){ if(oThis.Scale){ oThis.scaleRightDown(e); }else{ oThis.SetRight(e); oThis.SetDown(e); } };
_cursor = "nw-resize";
}
//设置触发对象
resize.style.cursor = _cursor;

addEventHandler(resize, "mousedown", function(e){ oThis._fun = _fun; oThis._touch = resize; oThis.Start(window.event || e); });
  },
  //准备缩放
  Start: function(oEvent, o) {
//防止冒泡
if(isIE){ oEvent.cancelBubble = true; } else { oEvent.stopPropagation(); }
//计算样式初始值
this.style_width = this._obj.offsetWidth;
this.style_height = this._obj.offsetHeight;
this.style_left = this._obj.offsetLeft;
this.style_top = this._obj.offsetTop;
//设置缩放比例
if(this.Scale){ this._scale = this.style_width / this.style_height; }
//计算当前边的对应另一条边的坐标 例如右边缩放时需要左边界坐标
this._left = oEvent.clientX - this.style_width;
this._right = oEvent.clientX + this.style_width;
this._up = oEvent.clientY - this.style_height;
this._down = oEvent.clientY + this.style_height;
//如果有范围 先计算好范围内最大宽度和高度
if(this.Limit){
this._mxRight = this.mxRight - this._obj.offsetLeft;
this._mxDown = this.mxBottom - this._obj.offsetTop;
this._mxLeft = this.mxLeft + this.style_width + this._obj.offsetLeft;
this._mxUp = this.mxTop + this.style_height + this._obj.offsetTop;
}
//mousemove时缩放 mouseup时停止
addEventHandler(document, "mousemove", this._fR);
addEventHandler(document, "mouseup", this._fS);

//使鼠标移到窗口外也能释放
if(isIE){
addEventHandler(this._touch, "losecapture", this._fS);
this._touch.setCapture();
}else{
addEventHandler(window, "blur", this._fS);
}
  }, 
  //缩放
  Resize: function(e) {
//没有触发对象的话返回
if(!this._touch) return;
//清除选择(ie设置捕获后默认带这个)
window.getSelection && window.getSelection().removeAllRanges();
//执行缩放程序
this._fun(window.event || e);
//设置样式
//因为计算用的offset是把边框算进去的所以要减去
this._obj.style.width = this.style_width - this._xBorder + "px";
this._obj.style.height = this.style_height - this._yBorder + "px";
this._obj.style.top = this.style_top + "px";
this._obj.style.left = this.style_left + "px";
//附加程序
this.onResize();
  },
  //普通缩放
  //右边
  SetRight: function(oEvent) {
//当前坐标位置减去左边的坐标等于当前宽度
this.repairRight(oEvent.clientX - this._left);
  },
  //下边
  SetDown: function(oEvent) {
this.repairDown(oEvent.clientY - this._up);
  },
  //左边
  SetLeft: function(oEvent) {
//右边的坐标减去当前坐标位置等于当前宽度
this.repairLeft(this._right - oEvent.clientX);
  },
  //上边
  SetUp: function(oEvent) {
this.repairUp(this._down - oEvent.clientY);
  },
  //比例缩放
  //比例缩放右下
  scaleRightDown: function(oEvent) {
//先计算宽度然后按比例计算高度最后根据确定的高度计算宽度(宽度优先)
this.SetRight(oEvent);
this.repairDown(parseInt(this.style_width / this._scale));
this.repairRight(parseInt(this.style_height * this._scale));
  },
  //比例缩放左下
  scaleLeftDown: function(oEvent) {
this.SetLeft(oEvent);
this.repairDown(parseInt(this.style_width / this._scale));
this.repairLeft(parseInt(this.style_height * this._scale));
  },
  //比例缩放右上
  scaleRightUp: function(oEvent) {
this.SetRight(oEvent);
this.repairUp(parseInt(this.style_width / this._scale));
this.repairRight(parseInt(this.style_height * this._scale));
  },
  //比例缩放左上
  scaleLeftUp: function(oEvent) {
this.SetLeft(oEvent);
this.repairUp(parseInt(this.style_width / this._scale));
this.repairLeft(parseInt(this.style_height * this._scale));
  },
  //这里是高度优先用于上下两边(体验更好)
  //比例缩放下右
  scaleDownRight: function(oEvent) {
this.SetDown(oEvent);
this.repairRight(parseInt(this.style_height * this._scale));
this.repairDown(parseInt(this.style_width / this._scale));
  },
  //比例缩放上右
  scaleUpRight: function(oEvent) {
this.SetUp(oEvent);
this.repairRight(parseInt(this.style_height * this._scale));
this.repairUp(parseInt(this.style_width / this._scale));
  },
  //修正程序
  //修正右边
  repairRight: function(iWidth) {
//右边和下边只要设置宽度和高度就行
//当少于最少宽度
if (iWidth < this.MinWidth){ iWidth = this.MinWidth; }
//当超过当前设定的最大宽度
if(this.Limit && iWidth > this._mxRight){ iWidth = this._mxRight; }
//修改样式
this.style_width = iWidth;
  },
  //修正下边
  repairDown: function(iHeight) {
if (iHeight < this.MinHeight){ iHeight = this.MinHeight; }
if(this.Limit && iHeight > this._mxDown){ iHeight = this._mxDown; }
this.style_height = iHeight;
  },
  //修正左边
  repairLeft: function(iWidth) {
//左边和上边比较麻烦 因为还要计算left和top
//当少于最少宽度
if (iWidth < this.MinWidth){ iWidth = this.MinWidth; }
//当超过当前设定的最大宽度
else if(this.Limit && iWidth > this._mxLeft){ iWidth = this._mxLeft; }
//修改样式
this.style_width = iWidth;
this.style_left = this._obj.offsetLeft + this._obj.offsetWidth - iWidth;
  },
  //修正上边
  repairUp: function(iHeight) {
if(iHeight < this.MinHeight){ iHeight = this.MinHeight; }
else if(this.Limit && iHeight > this._mxUp){ iHeight = this._mxUp; }
this.style_height = iHeight;
this.style_top = this._obj.offsetTop + this._obj.offsetHeight - iHeight;
  },
  //停止缩放
  Stop: function() {
//移除事件
removeEventHandler(document, "mousemove", this._fR);
removeEventHandler(document, "mouseup", this._fS);
if(isIE){
removeEventHandler(this._touch, "losecapture", this._fS);
this._touch.releaseCapture();
}else{
removeEventHandler(window, "blur", this._fS);
}
this._touch = null;
  }
};


//图片切割
var ImgCropper = Class.create();
ImgCropper.prototype = {
  //容器对象,拖放缩放对象,图片地址,宽度,高度
  initialize: function(container, drag, url, width, height, options) {
var oThis = this;

//容器对象
this.Container = $(container);
this.Container.style.position = "relative";
this.Container.style.overflow = "hidden";

//拖放对象
this.Drag = $(drag);
this.Drag.style.cursor = "move";
this.Drag.style.zIndex = 200;
if(isIE){
//设置overflow解决ie6的渲染问题(缩放时填充对象高度的问题)
this.Drag.style.overflow = "hidden";
//ie下用一个透明的层填充拖放对象 不填充的话onmousedown会失效(未知原因)
(function(style){
style.width = style.height = "100%"; style.backgroundColor = "#fff"; style.filter = "alpha(opacity:0)";
})(this.Drag.appendChild(document.createElement("div")).style)
}

this._pic = this.Container.appendChild(document.createElement("img"));//图片对象
this._cropper = this.Container.appendChild(document.createElement("img"));//切割对象
this._pic.style.position = this._cropper.style.position = "absolute";
this._pic.style.top = this._pic.style.left = this._cropper.style.top = this._cropper.style.left = "0";//对齐
this._cropper.style.zIndex = 100;
this._cropper.onload = function(){ oThis.SetPos(); }

this.Url = url;//图片地址
this.Width = parseInt(width);//宽度
this.Height = parseInt(height);//高度

this.SetOptions(options);

this.Opacity = parseInt(this.options.Opacity);
this.dragTop = parseInt(this.options.dragTop);
this.dragLeft = parseInt(this.options.dragLeft);
this.dragWidth = parseInt(this.options.dragWidth);
this.dragHeight = parseInt(this.options.dragHeight);

//设置预览对象
this.View = $(this.options.View) || null;//预览对象
this.viewWidth = parseInt(this.options.viewWidth);
this.viewHeight = parseInt(this.options.viewHeight);
this._view = null;//预览图片对象
if(this.View){
this.View.style.position = "relative";
this.View.style.overflow = "hidden";
this._view = this.View.appendChild(document.createElement("img"));
this._view.style.position = "absolute";
}

this.Scale = parseInt(this.options.Scale);

//设置拖放
this._drag = new Drag(this.Drag, this.Drag, { Limit: true, onMove: function(){ oThis.SetPos(); } });
//设置缩放
this._resize = this.GetResize();

this.Init();
  },
  //设置默认属性
  SetOptions: function(options) {
    this.options = {//默认值
Opacity: 50,//透明度(0到100)
//拖放位置和宽高
dragTop: 0,
dragLeft: 0,
dragWidth: 100,
dragHeight: 100,
//缩放触发对象
Right: "",
Left: "",
Up: "",
Down: "",
RightDown: "",
LeftDown: "",
RightUp: "",
LeftUp: "",
Scale: false,//是否按比例缩放
//预览对象设置
View: "",//预览对象
viewWidth: 100,//预览宽度
viewHeight: 100//预览高度
    };
    Object.extend(this.options, options || {});
  },
  //初始化对象
  Init: function() {
var oThis = this;

//设置容器
this.Container.style.width = this.Width + "px";
this.Container.style.height = this.Height + "px";

//设置拖放对象
this.Drag.style.top = this.dragTop + "px";
this.Drag.style.left = this.dragLeft + "px";
this.Drag.style.width = this.dragWidth + "px";
this.Drag.style.height = this.dragHeight + "px";

//设置切割对象
this._pic.src = this._cropper.src = this.Url;
this._pic.style.width = this._cropper.style.width = this.Width + "px";
this._pic.style.height = this._cropper.style.height = this.Height + "px";
if(isIE){
this._pic.style.filter = "alpha(opacity:" + this.Opacity + ")";
} else {
this._pic.style.opacity = this.Opacity / 100;
}

//设置预览对象
if(this.View){ this._view.src = this.Url; }

//设置拖放
this._drag.mxRight = this.Width; this._drag.mxBottom = this.Height;
//设置缩放
if(this._resize){ this._resize.mxRight = this.Width; this._resize.mxBottom = this.Height; this._resize.Scale = this.Scale; }
  },
  //设置获取缩放对象
  GetResize: function() {
var op = this.options;
//有触发对象时才设置
if(op.RightDown || op.LeftDown || op.RightUp || op.LeftUp || op.Right || op.Left || op.Up || op.Down ){
var oThis = this, _resize = new Resize(this.Drag, { Limit: true, onResize: function(){ oThis.SetPos(); } });

//设置缩放触发对象
if(op.RightDown){ _resize.Set(op.RightDown, "right-down"); }
if(op.LeftDown){ _resize.Set(op.LeftDown, "left-down"); }

if(op.RightUp){ _resize.Set(op.RightUp, "right-up"); }
if(op.LeftUp){ _resize.Set(op.LeftUp, "left-up"); }

if(op.Right){ _resize.Set(op.Right, "right"); }
if(op.Left){ _resize.Set(op.Left, "left"); }

if(op.Up){ _resize.Set(op.Up, "up"); }
if(op.Down){ _resize.Set(op.Down, "down"); }

return _resize;
} else { return null; }
  }, 
  //设置切割
  SetPos: function() {
var o = this.Drag;
//按拖放对象的参数进行切割
this._cropper.style.clip = "rect(" + o.offsetTop + "px " + (o.offsetLeft + o.offsetWidth) + "px " + (o.offsetTop + o.offsetHeight) + "px " + o.offsetLeft + "px)";
//切割预览
if(this.View) this.PreView();
  }, 
  //切割预览
  PreView: function() {
//按比例设置宽度和高度
var o = this.Drag, h = this.viewWidth, w = h * o.offsetWidth / o.offsetHeight;
if(w > this.viewHeight){ w = this.viewHeight; h = w * o.offsetHeight / o.offsetWidth; }
//获取对应比例尺寸
var scale = h / o.offsetHeight, ph = this.Height * scale, pw = this.Width * scale, pt = o.offsetTop * scale, pl = o.offsetLeft * scale, styleView = this._view.style;
//设置样式
styleView.width = pw + "px"; styleView.height = ph + "px";
styleView.top = - pt + "px "; styleView.left = - pl + "px";
//切割预览图
styleView.clip = "rect(" + pt + "px " + (pl + w) + "px " + (pt + h) + "px " + pl + "px)";
  }
}

var ic = new ImgCropper("bgDiv", "dragDiv", "../image/Sunset.jpg", 300, 400, {
dragTop: 50, dragLeft: 50,
Right: "rRight", Left: "rLeft", Up: "rUp", Down: "rDown",
RightDown: "rRightDown", LeftDown: "rLeftDown", RightUp: "rRightUp", LeftUp: "rLeftUp",
View: "viewDiv", viewWidth: 200, viewHeight: 200
})

</script>
<script>

//设置图片大小
function Size(w, h){
ic.Width = w;
ic.Height = h;
ic.Init();
}
//换图片
function Pic(url){
ic.Url = url;
ic.Init();
}
//设置透明度
function Opacity(i){
ic.Opacity = i;
ic.Init();
}
//是否使用比例
function Scale(b){
ic.Scale = b;
ic.Init();
}


</script>
<br />
<br />
<div>
  <input name="" type="button" value=" 增肥 " onclick="Size(500,400)" />
  <input name="" type="button" value=" 还原 " onclick="Size(300,400)" />
</div>

<br />
<div>
  <input name="" type="button" value=" 换图 " onclick="Pic('2.jpg')" />
  <input name="" type="button" value=" 还原 " onclick="Pic('1.jpg')" />
</div>

<br />
<div>
  <input name="" type="button" value=" 透明 " onclick="Opacity(0)" />
  <input name="" type="button" value=" 还原 " onclick="Opacity(50)" />
</div>

<br />
<div>
  <input name="" type="button" value="使用比例" onclick="Scale(true)" />
  <input name="" type="button" value="取消比例" onclick="Scale(false)" />
</div>
<br />
<div>
  <input name="" type="button" value="生成图片" onclick="Create()" />
  <br />
  <img id="imgCreat" />
</div>


<script>

function Create(){
var p = ic.Url,
x = ic.Drag.offsetLeft,
y = ic.Drag.offsetTop,

w = ic.Drag.offsetWidth,
h = ic.Drag.offsetHeight,

pw = ic.Width,
ph = ic.Height;

$("imgCreat").src = "/createServlet?p=" + p + "&x=" + x + "&y=" + y + "&w=" + w + "&h=" + h + "&pw=" + pw + "&ph=" + ph;
}

</script>

</body>
</html>
2
0
分享到:
评论

相关推荐

    javacv对图片进行文字提取,定位指定文字在图片的位置坐标,提高识别速度

    在这个特定的应用场景中,我们利用 JavaCV 对图片进行文字识别(OCR,Optical Character Recognition),以定位并提取指定文字在图片中的位置坐标,同时优化识别速度。 首先,我们需要了解 OCR 的基本概念。OCR ...

    java 切割图片 可预览,完整效果

    在Java编程语言中,处理图片上传并进行剪切是一项常见的任务,尤其在Web应用或图形处理软件中。本文将深入探讨如何使用Java实现这个功能,包括图片上传、预览以及剪切的完整流程。 首先,我们需要理解图片上传的...

    java 图片 切割 保存

    在这个场景下,我们需要实现的功能包括根据指定的缩放比例对图片进行切割,并将切割后的图片保存到本地。下面将详细介绍如何使用Java来完成这个任务。 首先,我们需要引入处理图像的库,Java标准库中的`javax....

    java javascript 图片切割

    在IT行业中,图片处理是一项常见的任务,特别是在网页设计、...在给定的`TestImageCopper`文件中,可能包含了Java或JavaScript实现的图片切割示例代码,通过查看和学习这些代码,可以加深对图片切割技术的理解和应用。

    java图片处理 根据大小获取指定大小图片

    java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小...

    java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配 ,文字自动换行

    这可以通过计算每行能容纳的字符数,然后对输入的文字进行分割,确保每一行不超过这个限制。 5. **文件上传**:实现文件上传功能,可以使用Servlet或Spring MVC等框架。用户通过表单提交文件后,服务器端接收并保存...

    java图片处理工具类

    在Java开发中,对图片进行处理是一项常见的需求,比如在Web应用中,我们可能需要对用户上传的图片进行压缩、裁剪、添加水印等操作。`ImageUtils`类正是为了解决这类问题而设计的一个工具类。该类提供了丰富的图片...

    java 水印 图像处理 图片分割 裁剪 缩放

    开发者可以使用`Graphics2D`的`drawImage()`方法,指定裁剪后的图像在目标位置的坐标。 5. **缩放**:缩放图像可以改变其大小,保持纵横比或不保持。Java 2D API的`BufferedImage`类提供了`getSubimage()`方法进行...

    Android下利用Bitmap切割图片

    当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。 首先,我们需要理解Bitmap对象的基本概念。Bitmap是一个像素数据的容器...

    图片缩放.rar java实现的图片切割功能

    本教程将聚焦于“图片缩放”与“Java实现的图片切割功能”,这对于初学者理解如何利用编程语言处理图像非常有帮助。 首先,我们要了解什么是图片缩放。图片缩放是指调整图像的尺寸,使其在保持原有比例的基础上变得...

    java线程图片切割与处理

    Java线程图片切割与处理涉及Java图像处理技术,利用Java的多线程功能来实现图像的并发操作。在Java中,图像处理主要依赖于`java.awt`包中的`Image`类,这是一个抽象类,提供了处理图像的基本方法。通过`Applet`类或`...

    java实现截取PDF指定页并进行图片格式转换功能

    "java实现截取PDF指定页并进行图片格式转换功能" 本文主要介绍了java实现截取PDF指定页并进行图片格式转换功能的技术要点。通过实例代码,文章详细地介绍了如何使用java语言来实现PDF指定页的截取和图片格式转换。 ...

    java实现的图形图像区域填充

    在Java中,我们可以使用`java.awt.image.BufferedImage`类来处理图像,它提供了对图像像素的直接访问。 接下来,让我们深入探讨如何在Java中实现区域填充算法。一种常用的方法是4连接法或8连接法。4连接法考虑的是...

    JAVA GIF图像切割

    这个“JAVA GIF图像切割”主题就涉及到如何在Java环境中对GIF图像进行裁剪和保存。 首先,让我们了解GIF图像格式。GIF(Graphics Interchange Format)是一种流行的位图图像格式,支持透明度和动画。由于其跨平台的...

    Java图片处理

    - 使用 `CropImageFilter` 类进行图片切割。 - 将切割后的图像写入文件。 #### 三、图片格式转换 除了图片的缩放和切割外,还可以实现图片格式的转换。这里可以使用 `javax.imageio.ImageIO` 类中的 `write` 方法...

    java实现上传图片进行切割的方法

    在Java编程中,实现图片上传并进行切割是一个常见的需求,特别是在网页设计中,为了保证图片在不同设备和浏览器上的展示效果,可能需要对图片进行适当的裁剪和处理。本篇文章将详细讲解如何在Java中实现这个功能。 ...

    java ocr图片识别

    8. **自定义训练**:对于特定字体或复杂文本,可能需要对Tesseract进行定制训练,以便提高特定场景下的识别率。 9. **性能优化**:根据应用需求,可以通过调整Tesseract的参数来优化性能,例如设置页面分割模式、...

    Java将大图片转成小图片

    以下是一些关于如何在Java中进行大图片到小图片转换的关键知识点: 1. **Java图像库**: Java提供了标准的`java.awt.image`和`javax.imageio`库,用于处理图像。其中,`BufferedImage`类是核心,它提供了读取、...

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

Global site tag (gtag.js) - Google Analytics