使用 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();
}
作者:陈维(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();
}
相关文章推荐
- 使用 Java 进行图像处理 - 编码输出高分辨率图像
- 使用 Java 进行图像处理 - 编码输出高分辨率图像
- 使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量
- 使用 Java 进行图像处理 - 图像翻转
- 使用 Java 进行图像处理 - 图像裁剪
- 使用Java进行图像处理的一些基础操作
- 使用 Java 进行图像处理 - 图像缩放
- 使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量
- 使用 Java 进行图像处理 - 将彩色图像转换为灰度图
- Linux下使用RecordMyDesktop进行屏幕录像 输出图像格式转换
- js对图片base64编码字符串进行解码并输出图像示例
- 使用ABBYY FineReader进行自动图像预处理
- 了解URL编码的基本概念,在javascript和java程序中使用内置的API进行编码和解码
- 如何使用MATLAB对图像进行批量的修改名称的处理
- 使用pillow进行图像处理
- OpenCV学习笔记(8)VS2008 MFC下使用OpenCV2.0进行简单图像处理
- 基于qml创建最简单的图像处理程序(3)-使用opencv&qml进行图像处理
- 使用 Java 对 Linux 下文件编码格式进行批量转换
- 使用python进行图像处理-调整图片大小
- 使用python进行图像处理