总体思想:
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图片裁剪的相关知识点。 一、图片裁剪原理 图片裁剪是指在原始图像上选择一个矩形区域,并保留该区域内的像素,舍弃其他部分。在Java中,我们通常会用到BufferedImage类,它代表了一个图像,包含...
总结起来,Java图片等比压缩和裁剪涉及读取图片、计算比例、缩放、裁剪和保存等多个步骤,需要理解图像处理的基本原理,并利用适当的库来实现。这个过程中需要注意保持图像质量,避免失真,并确保符合预期的输出尺寸...
这个"java裁剪、缩放图片工具类"提供了这样的功能。它包含两个主要的组件:一个工具类(ImgUtils.java)和一个测试类(Test.java)。让我们深入探讨这两个类及其背后的图像处理原理。 首先,`ImgUtils.java`是核心...
看很多裁剪图片的插件感觉都不是自己想要的,后来也是网上别人说croppic可以满足,结果发现是PHP的插件,而且网络上完全没有java版本的一丁点痕迹,我觉得数据都是一样的传,那应该就是参数的问题了,所以花了点时间...
在Java开发中,图片上传、预览、剪切和缩放是常见的功能需求,尤其在Web应用中。这里,我们主要探讨如何实现这些功能,并基于`swfupload`这个库来构建一个完整的解决方案。 首先,`swfupload`是一个古老的Flash上传...
首先,我们要了解图片裁剪的基本原理。Android系统提供了一个名为`com.android.camera.action.CROP`的Intent,用于启动系统内置的图片裁剪功能。开发者可以创建一个Intent,指定源图片Uri和裁剪参数(如裁剪比例、...
文件列表中的“Jquery+JAVA图片切割上传”可能包含以下部分: 1. 前端HTML和Jquery代码,用于用户界面展示、图片选择和提交。 2. JavaScript文件,包含Jquery实现的图片切割和滤镜功能的逻辑。 3. Java源代码,包括...
Java图片处理类是Java编程语言中用于操作和处理图像文件的核心技术,主要涉及Java的AWT(Abstract Window Toolkit)和Swing库。在Java课程设计中,学生通常会被要求掌握这些概念并应用到实际项目中,例如创建一个...
总结来说,"Java图片编辑软件"通过Java编程语言实现了图片压缩功能,这涉及到图像处理的基本原理、压缩算法以及Java库的使用。了解并掌握这些知识,有助于开发者构建自己的图像处理应用,满足各种需求。
本文将深入探讨如何使用Java来实现图片的指定放大或缩小,并提供一个具体的代码示例,该示例来自“common.util”包下的`AlterUploadImage`类,这是一个专门用于处理图片缩放和裁剪的工具类。 #### 图像缩放原理 ...
在Java编程中,生成PNG透明...总之,生成PNG透明图片缩略图在Java中涉及到图像处理的基本原理和高级技巧,选择合适的库和算法至关重要。同时,要注意透明度的正确处理和代码的优化,以确保缩略图的质量和程序的性能。
下面,我们将深入探讨Android中图片裁剪的实现原理、相关API以及如何优化代码。 在Android中,图片裁剪通常通过Intent来实现,Android系统内置了`ACTION_IMAGE_CAPTURE`和`ACTION_GET_CONTENT`这两个Intent,可以...
"jcrop + jquery + struts2 图片裁剪"的组合提供了一种强大的解决方案,它整合了三个关键的技术来实现用户友好的图像裁剪功能。 首先,Jcrop是jQuery的一个插件,专门用于图像的选择和裁剪。它允许用户通过鼠标或...
本篇文章将深入探讨Android图片裁剪的原理、实现方式以及`CropImageView`的使用方法。 首先,Android系统本身提供了`Bitmap.createBitmap()`方法,可以对原始Bitmap进行裁剪,但此方法无法提供直观的裁剪界面和交互...
#### Java图片压缩代码解析 给定的代码示例主要展示了如何使用Java进行图片的无损压缩处理。具体步骤如下: 1. **读取源图像**:首先,通过`ImageIO.read()`方法读取源图片文件到`Image`对象中。 2. **缩放图像**...
接下来,我们将深入探讨Android图片裁剪的基本原理、实现方法以及可能用到的关键技术。 1. **Intent集成系统裁剪**: Android系统提供了`Intent`来调用内置的图片裁剪工具。通过`ACTION_PICK` Intent获取图片,再...
下面我们将深入探讨Java图片压缩的相关知识点。 1. **图片格式** 图片格式有很多种,如JPEG、PNG、GIF、BMP等。不同的格式有不同的压缩算法和用途。JPEG适用于连续色调的图片,如照片,支持有损压缩;PNG适合于...
要实现图片裁剪,我们可以引入如JQuery Cropper这样的插件。JQuery Cropper是一个轻量级且功能丰富的jQuery插件,支持基于HTML5的Canvas进行图片裁剪。在页面上,用户可以通过拖动和调整裁剪框来选择需要的部分,...
4. **裁剪与边缘检测**:根据图像内容,可能需要进行裁剪,去除多余的背景。同时,可以使用Canny边缘检测或其他边缘检测算法,找到文档的边缘,进一步提高扫描效果。 5. **噪声去除**:使用滤波器(如高斯滤波器)...
首先,我们要了解Java封装FFmpeg的基本原理。通常,这涉及到使用JNI(Java Native Interface)或JNA(Java Native Access)来调用FFmpeg的C/C++库。这样,Java代码可以调用FFmpeg的函数,执行多媒体操作,而无需离开...