- 浏览: 110935 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (53)
- JavaBase (26)
- Java--strutsFrameWork (3)
- Java-HibernateFrameWork (0)
- Java--springFrameWork (10)
- Exception Summary (1)
- Java--Tomcat (0)
- JavaScript and Ajax (2)
- Programming Word (1)
- Search Engine (0)
- MySQLDatabase (0)
- OrcalDatabase (0)
- SQLserverDatabase (0)
- 各种配置 (0)
- 学习总结 (1)
- 个人随笔 (4)
- 个人情感 (2)
最新评论
-
jiazhen1021:
...
Spring框架中的Bean对象的生命周期 -
zzjmates:
很浅显的东西,没有讲到本质
深度解析JSP工作原理 -
knightjames:
好文章,虽然只是看懂一部分
深度解析JSP工作原理 -
jarip:
好文章就是看一遍就能清楚个大概,
深度解析JSP工作原理 -
qq672076266:
good
pageContext对象
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>
发表评论
-
JS..........
2009-12-04 03:22 14451.Jquery支持JSON 发送请求的方法 $ ... -
HTML
2009-12-04 03:20 1210<table> <tr> & ... -
DOM那点事儿。。
2009-12-02 00:35 1458DOM简介 DOM的接口和类 ... -
转载啊
2009-12-01 22:13 1280<!DOCTYPE html PUBLIC &qu ... -
JSP的7个动作指令
2009-11-30 17:10 2019JSP动作指令主要有如 ... -
JSP内置对象
2009-11-30 17:00 1935JSP脚本中包含9个内置对象,这9个内置对象都是Serv ... -
Exception对象
2009-11-30 16:38 1207Exception对象是Throwable的子类,代表着JSP ... -
pageContext对象
2009-11-30 16:19 10685使用pageContext可以访问page、reques ... -
JDBC即(JAVA_DATABASE_CONNECTION)一
2009-11-30 14:36 12722 - 连接 本概 ... -
Js实现图片切割
2009-11-30 01:21 2250//图片切割 var ImgCropper = Cla ... -
Js获取所有文本节点
2009-11-30 00:25 4419<script type="text/ ... -
AJAX的校验
2009-11-29 23:27 1107Validate.html <html> ... -
ANT工具使用
2009-11-28 00:23 1600ant使用: 1.下载ant构建工具1.7.1 2. ... -
编程单词
2009-11-28 00:21 948+release #n.释放, 排放, 解除释放令公映 ... -
JavaEnum
2009-11-27 15:32 871public class WeekDay { ... -
JS中获取节点下元素
2009-11-26 23:01 2044<html> <head> ... -
JavaScript遍历数组
2009-11-22 17:37 1381function ForInDemo() { // 创 ... -
Javascript数组遍历
2009-11-22 17:32 1300function ForInDemo() { // 创 ... -
JavaScript的一个随即例子
2009-11-22 01:44 963<!DOCTYPE HTML PUBLIC " ... -
Swing小程序
2009-11-22 01:17 846import java.awt.*; import ...
相关推荐
文件列表中的“Jquery+JAVA图片切割上传”可能包含以下部分: 1. 前端HTML和Jquery代码,用于用户界面展示、图片选择和提交。 2. JavaScript文件,包含Jquery实现的图片切割和滤镜功能的逻辑。 3. Java源代码,包括...
如果压缩包中的"完整的切割效果"包含了一个完整的实现示例,那么你可以参考其中的代码结构和逻辑,进一步理解图片切割和保存的具体实现。在实际项目中,你可能需要处理异常,优化性能,或者考虑多线程处理以提高...
在Java编程语言中,处理图片上传并进行剪切是一项常见的任务,尤其在Web应用或图形处理软件中。本文将深入探讨如何使用Java实现这个功能,包括图片上传、预览以及剪切的完整流程。 首先,我们需要理解图片上传的...
**Java图片切割** Java作为一个强大的后端开发语言,其丰富的库资源使得图片处理变得非常方便。核心的Java API提供了对图像处理的基本支持,如`java.awt.image.BufferedImage`类可以用于读取、创建和操作图像。在...
使用java和一个jquery插件弄的图像切割。类似于网站会员上传头像的功能。 访问地址:/NewImg/uploadimage.jsp 和:/NewImg/imgsel/piccut.jsp 两个地方用的不同javascript代码。 自动创建文件夹,如果文件夹中的文件...
下面是一个简单的Java图片切割的步骤: 1. **读取图像**:使用`ImageIO.read()`方法从文件中加载图像到`BufferedImage`对象。 2. **定义切割区域**:根据需求确定要切割的图像部分,可以设定起始坐标和宽度、高度。...
由于工作需要将网页保存为图片,存...自己编写了一个小工具,可自动将图片分割为A4大小,如果有切到文字或图片,可拖动分割线微调,调好后生成即可保存为顺序的图片,非常方便,源代码奉上,有需要类似需求的可以参考。
https://www.cctv3.net/codes/java-image-spliter.html
这个Java图片分割器,虽然没有详细描述其具体算法,但我们可以推测它可能采用了常见的图像处理技术,比如边缘检测(Canny、Sobel等)、阈值分割、区域生长或者更复杂的深度学习模型如U-Net等。这些技术都是通过分析...
2. **图像处理**:游戏的核心部分是对图片的处理,包括将完整图片分割成N²个等大小的小方格,并能进行打乱操作。这需要对图像的裁剪和复用有所了解,可能是通过BufferedImage类来实现的。 3. **智能寻步**:游戏...
要使用Tesseract,首先需要安装Tesseract的本地库,然后通过Java接口调用其API进行图片文字识别。 2. **PIL(Python Imaging Library)和ImageIO**:虽然PIL是Python的图像处理库,但Java中可以使用ImageIO来读取、...
本项目是基于Java实现的图像分割算法,涉及到的知识点广泛,包括全局阈值分割、Roberts边缘检测以及灰度图像处理和直方图分析。 1. **全局阈值分割**: 全局阈值分割是一种简单的二值化方法,它通过设定一个全局...
本文将详细介绍如何使用Java进行头像截图和图片切割。 首先,Java提供了`java.awt.image`和`javax.imageio`这两个核心包来处理图像操作。在头像截图的场景中,我们通常需要从一个大图中截取出特定的部分,这涉及到...
Java图像处理技术是Java开发中的一个重要领域,涵盖了多种操作,如添加水印、图像分割、裁剪和缩放。在本项目中,这些功能被整合到一个完整的程序中,并通过单元测试进行了验证,确保了各个功能的正确性。此外,程序...
java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小获取指定大小图片 以及图片尺寸处理 等等java图片处理 根据大小...
本教程将专注于使用Java语言实现图片的等比缩放和压缩技术,以满足存储和传输的需求。下面,我们将深入探讨这些关键知识点。 首先,我们来了解等比缩放。等比缩放是指在改变图片尺寸时,保持其长宽比不变,防止图片...
在Java编程中,实现图片上传并添加水印效果是一项常见的任务,这通常涉及到图像处理、图形用户界面(GUI)和文件I/O等多个方面。在这个项目中,我们将关注以下几个关键知识点: 1. **Java图像处理库**:Java标准库...
本项目聚焦于使用JAVA实现图片的剪切预览功能,并结合JQUERY前端控件来提供用户友好的交互体验。以下将详细阐述相关知识点。 首先,让我们关注“JAVA实现的图片剪切预览”这一主题。在Java中,处理图片主要依靠Java...
在Java编程环境中,将多张JPEG格式的图片转换为动态GIF格式是一项常见的图像处理任务。这个Demo展示了如何使用Java的图像处理库来完成这一过程。以下是对这个过程的详细解释: 首先,我们需要一个能够处理GIF格式的...
总的来说,Java图片渐进显示技术涉及了Java图像处理、流式读取、GUI组件更新以及可能的多线程和内存管理等知识。通过学习和实践,我们可以为用户提供更流畅的图片加载体验。如果你在实现过程中遇到任何问题,欢迎...