处理流程是这样的,
原始图像(BufferedImage)→BufferedImageOp→目标图像(BufferedImage)
先来看下怎样从图片文件得到BufferedImage,和最后将其写入文件。这里一般用2个API,位于javax.imageio中的类ImageIO中。
public
static
BufferedImage read(File input)
public static boolean write(RenderedImage im, String formatName, File output)
public static boolean write(RenderedImage im, String formatName, File output)
具体请参见JDk6API。
回头再来看BufferedImageOp这个接口。有用的是具体实现它的类。AffineTransformOp就是其中之一(其余的请看JDK和最后引用的高手的文章)。而要用AffineTransformOp直接操作,其实要用到的是AffineTransform这个类,它作为参数被传入到AffineTransformOp的构造函数中。而它的作用是“AffineTransform 类表示 2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移 (translation)、缩放 (scale)、翻转 (flip)、旋转 (rotation) 和错切 (shear) 来构造仿射变换“。其操作就请参见后面引用文章的具体的参考啦。
举一个把图片缩小到原来大小一半的例子。
import
java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.io.File;
import javax.imageio.ImageIO;
static public void ScaleIt(File src, File dst) throws java.io.IOException{
BufferedImage biSrc;
if (src.exists() && src.isFile()){
biSrc = ImageIO.read(src);
} else {
return ;
}
AffineTransform at = new AffineTransform();
at.scale( 0.5 , 0.5 );
BufferedImageOp bi = new AffineTransformOp(at, null );
BufferedImage biDst = bi.filter(biSrc, null );
ImageIO.write(biDst, " jpeg " , dst);
}
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
import java.io.File;
import javax.imageio.ImageIO;
static public void ScaleIt(File src, File dst) throws java.io.IOException{
BufferedImage biSrc;
if (src.exists() && src.isFile()){
biSrc = ImageIO.read(src);
} else {
return ;
}
AffineTransform at = new AffineTransform();
at.scale( 0.5 , 0.5 );
BufferedImageOp bi = new AffineTransformOp(at, null );
BufferedImage biDst = bi.filter(biSrc, null );
ImageIO.write(biDst, " jpeg " , dst);
}
以下是java处理的一些资料
我的上传资料里面《java 2D graphic》,sun官方推荐的2D处理的书。
http://www.javaworld.com/javaworld/jw-09-1998/jw-09-media.html?page=1
http://www.javaworld.com/javaworld/jw-08-1998/jw-08-media.html