您的位置:首页 > 编程语言 > Java开发

使用 Java 进行图像处理 - 图像编码输出

2007-11-13 14:34 761 查看
版权声明:转载时请务必保留以下作者信息和链接
作者:陈维(chenweionline@hotmail.com)作者的网站:http://www.chenwei.mobi

图像编码输出的方法,提供编码进度监听,向图像文件中添加缩略图和设置编码质量的支持(特定格式,例如 JPG)。

这个方法支持的编码格式依赖运行环境里 ImageIO 已经注册 ImageWriter 集合。

Java SE 6 中的 ImageIO 默认支持 JPG, BMP, PNG, GIF 等格式,也可以通过非标准类库添加 ImageIO 对图像格式的支持,比如安装 JAI_ImageIO 。




/** *//**


* 编码输出图像。


* 向图像文件中添加图像缩略图和设置图像压缩质量需要根据具体图像格式。


*


* @param out 输出流。


* @param listener 编码输出进度监听器。


* @param formatName 包含格式非正式名称的 String,例如"jpg"。


* @param image 图像。


* @param thumbnails 缩略图集。


* @param quality 压缩质量。


* @throws java.io.IOException


*/


public static void write(


ImageOutputStream out,


IIOWriteProgressListener listener,


String formatName,


BufferedImage image,


List<? extends BufferedImage> thumbnails,




float quality) throws IOException...{




if(out == null)...{


throw new IllegalArgumentException("OutputStream must be non null");


}







if(formatName == null)...{


throw new IllegalArgumentException("FormatName must be non null");


}







if(image == null)...{


throw new IllegalArgumentException("Image must be non null");


}





// 取得合适的 ImageWriter。


Iterator writers = ImageIO.getImageWritersByFormatName(formatName);




if (writers == null || !writers.hasNext()) ...{


throw new IllegalStateException("No " + formatName + " writers!");


}


ImageWriter writer = (ImageWriter) writers.next();





ImageTypeSpecifier imageType = ImageTypeSpecifier.createFromRenderedImage(image);


IIOMetadata metadata = writer.getDefaultImageMetadata(imageType, null);





IIOImage iioImage = new IIOImage(image, thumbnails, metadata);





ImageWriteParam param = writer.getDefaultWriteParam();


param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);


param.setCompressionQuality(quality);





writer.setOutput(out);


writer.addIIOWriteProgressListener(listener);


writer.write(null, iioImage, param);


writer.dispose();


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: