不多说,直接上代码
前台用到的是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() ;
}
}
分享到:
相关推荐
js+jquery+java实现的头像上传和裁剪,界面仿百度头像上传样式,完美兼容各种浏览器,集成java上传技术+java图像处理+js剪切图片效果+jquery无刷新上传文件
包含ajax异步请求多种数据交互方式,jst多种实现及jquery简单插件开发;完整myeclipse项目(代码有适当解释,适合初学者)
基于 java+SSM+JSP+jquery+bootstrap学生信息管理系统. 毕业设计完整代码
3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于Servlet+JSP+Jquery+EL+Ajax的餐饮管理系统源码.zip基于...
java结合jquery插件实现无限滚动自动翻页源代码
Java毕业设计基于Servlet+JQuery+Ajax实现的小区物业管理系统源代码+数据库,采用MVC模式 代码均经过实测运行,有数据库文件,导入库即可,小白可以操作,eclipse/idea均可。
3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于mysql5.0+servlet2.5+jsp+ajax+easyui+jquery开发的学生信息管理系统源码+项目说明(基本信息管理、课程信息管理、...
java源代码,主要是jquery插件的利用 java源代码,主要是jquery插件的利用 java源代码,主要是jquery插件的利用
基于 SSM + Maven + JQuery实现的水果购物商城项目源码+数据库 本项目代码经过严格调试,确保可以运行!放心下载使用。可作为期末课程设计、课程大作业、毕业设计等。具有较高的学习借鉴价值! 安装教程 1、先把该...
实现一个基于Jquery的表单验证插件。 1、初步运用了Jquery框架进行编程,基本掌握Jquery框架的使用。 2、熟练使用Jquery-validate表单验证插件,并熟知实现原理。 3、基本实现了一个基于Jquery的表单验证的调查问卷...
基于mysql5.0+servlet2.5+jsp+ajax+easyui+jquery开发的学生信息管理系统源码+项目说明(基本信息管理、课程信息管理、选课、考勤与签到、成绩信息管理).zip 基于mysql5.0+servlet2.5+jsp+ajax+easyui+jquery开发的...
java实现jQuery带删除功能多图片上传预览插件 另带一个使用junit编写的测试类 使用eclipse创建maven项目
实现商品管理、订单管理、用户管理等功能的后端接口。 前端开发: 使用HTML、CSS和JavaScript开发前端界面。 使用Vue.js、React.js等前端框架可以提高开发效率。 权限控制: 实现用户登录、权限验证等功能,确保...
Struts2+JQuery+Json及JQuery相关插件的例子(好),json架包,JSON简介,JSON入门指南,JSON入门教程,java解析JSON
NULL 博文链接:https://hc-java.iteye.com/blog/1874574
java使用jquery_validate插件实现文本校验,各种校验,比较全,其中有个extension.js文件,是自己扩展后的
物流公司货运配送管理系统要求基于B/S架构,开发出一个对硬件要求相对较低,功能全面能实现物流管理人员日常工作,操作简单方便,易上手,使用流畅,可扩展性强的应用管理系统。主要实现用户注册、登录,角色管理,...
Jquery网页排版插件 Jquery java myeclipse
(4)jas2.js -- 页面主要逻辑的JS, 各种前端功能实现 (5)tom.js -- 后期做的实现了聊天框拖曳的JS (6)jas.css -- 页面布局 后台 (1)DB.java --用于JDBC的链接 (2)Deal.java --群聊的收发逻辑 和 数据库交互 (3)...