不多说,直接上代码
前台用到的是js插件,叫:imgareaselect,它可以传过来要裁剪图的宽+高+上边距+左边距,有这四个参数就能裁剪一个小图出来。
后台java代码如下:
package com.wodexiangce;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
/** *//**
*
*/
public class OperateImage ...{
//===源图片路径名称如:c:\1.jpg
private String srcpath ;
//===剪切图片存放路径名称.如:c:\2.jpg
private String subpath ;
//===剪切点x坐标
private int x ;
private int y ;
//===剪切点宽度
private int width ;
private int height ;
public OperateImage()...{
}
public OperateImage(int x,int y,int width,int height)...{
this.x = x ;
this.y = y ;
this.width = width ;
this.height = height ;
}
/** *//**
* 对图片裁剪,并把裁剪完蛋新图片保存 。
*/
public void cut() throws IOException...{
FileInputStream is = null ;
ImageInputStream iis =null ;
try...{
//读取图片文件
is = new FileInputStream(srcpath);
/**//*
* 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader
* 声称能够解码指定格式。 参数:formatName - 包含非正式格式名称 .
*(例如 "jpeg" 或 "tiff")等 。
*/
Iterator<ImageReader> it = ImageIO.getImageReadersByFormatName("jpg");
ImageReader reader = it.next();
//获取图片流
iis = ImageIO.createImageInputStream(is);
/**//*
* <p>iis:读取源.true:只向前搜索 </p>.将它标记为 ‘只向前搜索’。
* 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader
* 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。
*/
reader.setInput(iis,true) ;
/**//*
* <p>描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O
* 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件
* 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回
* ImageReadParam 的实例。
*/
ImageReadParam param = reader.getDefaultReadParam();
/**//*
* 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象
* 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。
*/
Rectangle rect = new Rectangle(x, y, width, height);
//提供一个 BufferedImage,将其用作解码像素数据的目标。
param.setSourceRegion(rect);
/**//*
* 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将
* 它作为一个完整的 BufferedImage 返回。
*/
BufferedImage bi = reader.read(0,param);
//保存新图片
ImageIO.write(bi, "jpg", new File(subpath));
}
finally...{
if(is!=null)
is.close() ;
if(iis!=null)
iis.close();
}
}
public int getHeight() ...{
return height;
}
public void setHeight(int height) ...{
this.height = height;
}
public String getSrcpath() ...{
return srcpath;
}
public void setSrcpath(String srcpath) ...{
this.srcpath = srcpath;
}
public String getSubpath() ...{
return subpath;
}
public void setSubpath(String subpath) ...{
this.subpath = subpath;
}
public int getWidth() ...{
return width;
}
public void setWidth(int width) ...{
this.width = width;
}
public int getX() ...{
return x;
}
public void setX(int x) ...{
this.x = x;
}
public int getY() ...{
return y;
}
public void setY(int y) ...{
this.y = y;
}
public static void main(String[] args)throws Exception...{
String name = "d:\2005121210161588950.jpg";
OperateImage o = new OperateImage(100,100,100,100);
o.setSrcpath(name);
o.setSubpath("D:\2.jpg");
o.cut() ;
}
}
分享到:
相关推荐
3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于...
同时,JQuery插件丰富了网页的功能,例如数据表格排序、分页、弹窗等,这些插件往往可以极大地提高用户体验。 Mysql是一个流行的关系型数据库管理系统,它以速度快、稳定性好和易于使用著称。在SSH框架中,Mysql...
jQuery的简单插件开发可能涉及到扩展其核心功能,例如表单验证、轮播图、日期选择器等。在这个实例中,jQuery可能被用来增强页面的交互性,如通过Ajax调用后端服务,处理返回的数据,并更新页面元素。 综上所述,这...
6. **插件开发**:理解jQuery插件的工作原理,如何创建自己的插件。 7. **jQuery与其他库的集成**:如Bootstrap、AngularJS等,提升前端开发效率。 通过书中实例,读者将有机会实践这些理论知识,加深理解,并能够...
jQuery还提供了插件生态系统,使得开发者能够轻松添加复杂的功能,如日期选择器、表单验证等。 **Java**虽然在标签中提及,但在描述中没有直接提到。Java通常用于服务器端编程,为Web应用提供后端逻辑。如果这个...
通过以上步骤,我们可以利用Struts2框架结合jQuery与JSON轻松地实现Ajax功能。需要注意的是,在实际应用中可能还需要考虑更多的因素,比如安全性、性能优化等。此外,随着技术的发展,现代Web开发中也出现了更多先进...
jQuery插件如jQuery Cropper(https://fengyuanchen.github.io/cropperjs/)可以提供图像裁剪的功能。这个插件允许用户在预览的图片上选择一个矩形区域,然后保存选定的部分作为新的图像。它支持多种裁剪比例、旋转...
在IT行业中,Java、JSON和jQuery是三种非常重要的技术,它们在Web开发中扮演着核心角色。本实例集合提供了一个基于这些技术的实践项目,旨在帮助初学者快速掌握它们的基本用法和相互间的协同工作。 首先,让我们...
本文将详细介绍如何在Struts2项目中集成jQuery插件,并通过一个简单的示例来演示具体的实现步骤。 #### 二、Struts2简介 Struts2是一个基于MVC设计模式的Java Web应用框架,它简化了Java Web应用的开发过程,提供...
在现代Web开发中,异步数据传输是提升用户体验的关键因素之一。"Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型...而文件名"jqueryTest2"可能代表了一个包含jQuery示例代码的测试项目,用于演示这一功能的实现。
在本教程中,我们将探讨如何利用这些技术实现一个简单的验证功能。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织应用程序结构的方式,简化了Java Servlet和JSP的...
总结起来,这个项目结合了Struts2的Action和JSON支持,利用jQuery的Ajax功能,实现了客户端与服务器之间的数据交互,达到了动态更新页面的目的。对于Web开发者来说,了解这种技术组合有助于提高开发效率和用户体验。
这是一个基于Java技术栈的毕业设计项目,主要使用了Spring、SpringMVC和MyBatis(SSM)框架,结合JSP、jQuery和Bootstrap来构建一个高效、用户友好的学生信息管理系统。下面将详细介绍这个系统的核心技术和实现细节...
综上所述,"java结合jquery插件实现无限滚动自动翻页源代码"这个项目涵盖了前端和后端的多种技术,涉及到了用户界面的交互优化、数据加载的效率提升以及多设备适配等多个方面。通过学习和实践这样的项目,开发者可以...
总结来说,"java源代码,主要是jquery插件的利用"意味着在Java后端项目中,前端部分通过jQuery和其插件来实现用户交互和动态更新,同时与Java后端进行数据交换。这种结合充分利用了Java的强大后端处理能力和jQuery的...
在这个“Struts2+jQuery实现局部刷新”的主题中,我们将探讨如何利用这两者的优势来实现页面的无刷新更新。 1. **Struts2框架介绍**: Struts2是一个基于MVC设计模式的Java Web框架,它提供了良好的结构和可扩展性...
本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...
标题中的“plupload+jquery+java多文件上传下载功能”是指使用plupload插件结合jQuery和Java技术,实现一个能够支持多文件上传和下载(包括单个文件直接下载及多个文件打包下载)的功能。这个功能通常应用于需要大量...