java ImageIO处理
来源:互联网 发布:怎么加入淘宝全球购 编辑:程序博客网 时间:2024/05/18 20:12
avax.imageio使用 ImageIO 类的静态方法可以执行许多常见的图像 I/O 操作。 此包包含一些基本类和接口,有的用来描述图像文件内容(包括元数据和缩略图)(IIOImage);有的用来控制图像读取过程(ImageReader、ImageReadParam)和控制图像写入过程(ImageWriter 和 ImageWriteParam);
- package com.mapbar.graphics;
-
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.Iterator;
-
- import javax.imageio.ImageIO;
- import javax.imageio.ImageReadParam;
- import javax.imageio.ImageReader;
- import javax.imageio.metadata.IIOMetadata;
- import javax.imageio.stream.ImageInputStream;
-
- import com.sun.image.codec.jpeg.JPEGCodec;
- import com.sun.image.codec.jpeg.JPEGImageEncoder;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public class ImageIOTest {
-
-
-
-
- public void formatImageNames() {
-
- String[] imageFormats = ImageIO.getReaderFormatNames();
-
- System.out.println(Arrays.asList(imageFormats));
-
- String[] imageFormats1 = ImageIO.getWriterFormatNames();
-
- System.out.println(Arrays.asList(imageFormats1));
-
- }
-
-
-
-
-
-
-
- public void imageReaderOp() throws IOException {
- Iterator<ImageReader> readers = ImageIO
- .getImageReadersByFormatName("JPG");
- ImageReader reader = readers.next();
-
- File bigFile = new File("E:\\big.JPG");
- ImageInputStream iis = ImageIO.createImageInputStream(bigFile);
-
- reader.setInput(iis, true);
-
- int imageIndex = 0;
- int width = reader.getWidth(imageIndex);
- }
-
-
-
-
-
-
- public void imageReadParamOp() throws IOException {
- int imageIndex = 0;
- Iterator<ImageReader> readers = ImageIO
- .getImageReadersByFormatName("JPG");
- ImageReader reader = readers.next();
- File bigFile = new File("E:\\big.JPG");
- ImageInputStream iis = ImageIO.createImageInputStream(bigFile);
- reader.setInput(iis, true);
- ImageReadParam irp = reader.getDefaultReadParam();
- int halfWidth = reader.getWidth(imageIndex) / 2;
- int halfHeight = reader.getHeight(imageIndex) / 2;
- Rectangle rect = new Rectangle(0, 0, halfWidth, halfHeight);
- irp.setSourceRegion(rect);
- BufferedImage bi = reader.read(imageIndex, irp);
- ImageIO.write(bi, "JPG", new File("E:\\big_half.JPG"));
- }
-
-
-
-
-
-
- public void ImageMetadata() throws IOException {
- int imageIndex = 0;
- Iterator<ImageReader> readers = ImageIO
- .getImageReadersByFormatName("JPG");
- ImageReader reader = readers.next();
- File bigFile = new File("E:\\big.JPG");
- ImageInputStream iis = ImageIO.createImageInputStream(bigFile);
- reader.setInput(iis, true);
- IIOMetadata metadata = reader.getImageMetadata(imageIndex);
- }
-
-
-
-
-
-
- public void generateSmall() throws IOException {
- File bigFile = new File("E:\\big.JPG");
- Image image = ImageIO.read(bigFile);
- int width = image.getWidth(null);
- int height = image.getHeight(null);
- BufferedImage buffi = new BufferedImage(width / 2, height / 2,
- BufferedImage.TYPE_INT_RGB);
- Graphics g = buffi.getGraphics();
- g.drawImage(image, 0, 0, width / 2, height / 2, null);
- g.dispose();
- ImageIO.write(buffi, "JPG", new File("E:\\small.JPG"));
- }
-
- public static void main(String[] args) throws IOException {
- ImageIOTest iot = new ImageIOTest();
- iot.generateSmall();
- iot.formatImageNames();
- iot.imageReaderOp();
- iot.imageReadParamOp();
- iot.ImageMetadata();
- }
-
- }