首页javaimageJava Graphics - 如何读取BufferedImage的一部分

Java Graphics - 如何读取BufferedImage的一部分

我们想知道如何读取BufferedImage的一部分。
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class Main {

  public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.w3cschool.cn/style/download.png");
    Image chunk = readFragment(url.openStream(), new Rectangle(15, 15, 30,
        25));
    JOptionPane.showMessageDialog(null, new ImageIcon(chunk), "Duke",
        JOptionPane.INFORMATION_MESSAGE);

  }
  public static BufferedImage readFragment(InputStream stream, Rectangle rect)
      throws IOException {
    ImageInputStream imageStream = ImageIO.createImageInputStream(stream);
    ImageReader reader = ImageIO.getImageReaders(imageStream).next();
    ImageReadParam param = reader.getDefaultReadParam();

    param.setSourceRegion(rect);
    reader.setInput(imageStream, true, true);
    BufferedImage image = reader.read(0, param);

    reader.dispose();
    imageStream.close();

    return image;
  }

}