Home
JavaEE
Java GUI
Framework
DHtml
Android
插画
教程下载

ATOM 2.0   RSS 2.0
Add to iGoogle Add to Live.com
  • 今天终于收到金山快盘的邀请码
  • 利用最短ie判断在不同浏览器上播放背景音乐
  • 对插画方面的一点感受与回忆
  • 网上看到的两个死里逃生的图片,记录一下
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 对Android在互联网应用开发上的纠结
  • 收藏夹中的书签都没了,决定写一个自已的书签管理器
  • 测试自已整理的本机的webapps客户端发送博文能否成功。
  • 今天开通了糖果社区,附几个激活码
  • 终于可以实现我的多个微博实时同步了
  • 备案和现场拍照就是对站长们的瞎折腾
  • 昨天借用飞姐的佳作做的一个浪漫爱情网页
  • 有几个腾讯微博的邀请码(实时更新)
  • BB的网站移到了GAE-JAVA上了
  • 一个基于GAE Python Web.py和JQuery的留言本程序
  • 类许愿墙的一个告白网站和一个电子书网站
  • Android中用Bitmap获取图片中某个区域的图象
  • 对暴力破解带密码的QQ相册的可行性分析
  • 对淘宝web旺旺版一些通讯接口的研究

使用ImageWriteParam对java图片压缩

posted by David Chen at July 6, 2008, 6:02 AM    

ImageWriter用于写图片,ImageWriteParam用于指定写图片的一些参数,包括质量,每位的像素等。
ImageReader 用于读图片, ImageReadParam用于指定读的方法.

这是向输出流写图片的代码:
 protected ImageWriter imgWrier;
 protected ImageWriteParam imgWriteParams;
 public WriteImage() {
        this( (float) 0.2 );
 }
 
 public WriteImage( float qality ) {
        imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
        // 指定写图片的方式为 jpg
        imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null);
        // 使用jpg的写图片的方式,
        imgWriteParams.setCompressionMode( imgWriteParams.MODE_EXPLICIT );
        // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT,
        imgWriteParams.setCompressionQuality( qality );
        // 这里指定压缩的程度,参数qality是取值0~1范围内,
        imgWriteParams.setProgressiveMode( imgWriteParams.MODE_DISABLED );
        ColorModel colorModel = ColorModel.getRGBdefault();
        // 指定压缩时使用的色彩模式
        imgWriteParams.setDestinationType(
                new javax.imageio.ImageTypeSpecifier(
                        colorModel,
                        colorModel.createCompatibleSampleModel(16, 16)) );
 }
 
 public void compress( RenderedImage image, ImageOutputStream out) throws IOException {
        if( image == null ) return ;
        imgWrier.reset();
        imgWrier.setOutput( out );
        // 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何 OutputStream构造
        imgWrier.write( null, new IIOImage(image, null, null), imgWriteParams );
        // 调用write方法,就可以向输入流写图片
 }

再看从输入流读图片的代码:
 protected ImageReader reader;
 protected ImageReadParam imgReadParams;
 public ReadImage() {
        reader = ImageIO.getImageReadersByFormatName("jpg").next();
        // 取得jpg的读图片的reader
        imgReadParams = new javax.imageio.plugins.jpeg.JPEGImageReadParam();
        // 读的参数格式是jpg的
 }
 
 public BufferedImage read(javax.imageio.stream.ImageInputStream in) throws IOException {
        // ImageInputStream 可构造自任何的InputStream,
        reader.reset();
        reader.setInput( in ); // 在read前必须指定输入流
        return reader.read( 0, imgReadParams );
        // 从输入流中读取一张图片, imgReadParams的格式读取
 }
Labels:   Java    Java GUI  
Trackback:   http://cwq.iou1314.com/imagewriteparam-imagewriter_a329
微博最近更新
[2010-07-31 16:33]    今天下午又将昨天赢的哎齐出来了,郁闷,一进一出,要有入没出才行啊。
[2010-07-31 07:40]    昨晚又去啊泄度开台,呢次赢左差唔多3旧水,下周星期一请假,回郁南去转社保和入党资料。
本站内的任何文章,只代表个人意见或学习所用,如有版权声明,请尊重作者的劳动成果,在转载时请保留原始链接并注明出处。
Power by David's PhpCms, © 2007 - 2010 CWQ.IOU1314.COM All Rights Reserved.