Java2D图像处理超简述

 
处理流程是这样的,
原始图像(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)
具体请参见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);
    }

以下是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值