总体思想:
1.前台网页用js得到裁剪图片的id及x,y,宽度和高度。
2.服务端根据id取出要裁剪的图片 。
3.根据这些参数来生成裁剪的图像。
后台代码如下:
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;
/** */
/**
*
*
*
@author
<a href="mailto:lqinglong@yahoo.cn">qinglong.lu</a>
*
* 2008-3-21
*/
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() ;
}
}
分享到:
相关推荐
java图片裁剪技术
对图片裁剪,并把裁剪完新图片保存 描述如何对流进行解码的类<p>.用于指定如何在输入时从 Java Image I/O
自己写的一个java实现的图片裁剪源码,一个简单实现类,简单实用。
java图片上传、控制大小、宽度高度和图片裁剪并保存
java图片裁剪和java生成缩略图.pdf
一共包含了三种方法对于图片尺寸的修改———— 一种是使用第三方工具 ImageMagick 两种使用java自带类进行修改。
Java实现图片裁剪预览, 详细可以看我的博文
在JAVA编程里,实现图片的裁剪。java 图片裁剪 裁剪图片。
使用java代码,实现图片的裁剪,可以将图片按照要求进行裁剪。
纯java代码,演示上传文件,适合任何文件,主要是了解HTTP请求的信息,然后解析请求的字符串,此事例只考虑了现在的两种主要的浏览器的请求,因为浏览器不一样文件名会有差异,IE就只有文件名,而FF就是全路径名
java上传并裁剪图片,功能已经实现,非常完美
java图片等比压缩后裁剪
Java深入微服务原理改造房产销售平台 Java 微服务 spring sping boot
java 对图片操作的工具类, 对图片进行剪裁 重置图片大小 按倍率缩小图片 对图片裁剪,并把裁剪新图片保存
Java游戏编程原理与实践教程加随书源代码,Java游戏编程原理与实践教程PDF和源代码一起
java端采用Servlet;来处理图像裁剪;ajax发送请求裁剪,无刷新见效果(只支持IE、火狐浏览器);工程附带Flex版图像裁剪半成品,代码没写完(受网友请求一并附在工程里了)
NULL 博文链接:https://mutourenoo.iteye.com/blog/1249555
19年10月3号更新 新资源地址https://download.csdn.net/download/b379685397/11831772。 使用教程见https://blog.csdn.net/b379685397/article/details/101940373 有问题可以私信我哦
兼容性不是很高。大家可以帮忙完善。哈哈。