画像の一部を別ファイルに保存する。
Java Image I/O API ガイド を読みながら、プログラムを作ってみた。
gif 形式の画像の左上4分の1の部分を png 形式で保存している。
import java.awt.image.BufferedImage; import java.awt.Rectangle; import java.io.File; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageReadParam; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; public class Test { public static void main(String[] args) { Iterator readers = ImageIO.getImageReadersByFormatName("gif"); ImageReader reader = (ImageReader)readers.next(); File source = new File("test.gif"); BufferedImage bi = null; try { ImageInputStream iis = ImageIO.createImageInputStream(source); reader.setInput(iis, true); int imageIndex = 0; int halfWidth = reader.getWidth(imageIndex) / 2; int halfHeight = reader.getHeight(imageIndex) / 2; Rectangle rect = new Rectangle(0, 0, halfWidth, halfHeight); ImageReadParam param = reader.getDefaultReadParam(); param.setSourceRegion(rect); bi = reader.read(imageIndex, param); } catch (java.io.IOException e) { e.printStackTrace(); } Iterator writers = ImageIO.getImageWritersByFormatName("png"); ImageWriter writer = (ImageWriter)writers.next(); File out = new File("test1.png"); try { ImageOutputStream ios = ImageIO.createImageOutputStream(out); writer.setOutput(ios); writer.write(bi); } catch (java.io.IOException e) { e.printStackTrace(); } } }