import java.awt.Dimension; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Iterator; import javax.imageio.IIOParamController; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageReadParam; import javax.imageio.ImageTypeSpecifier; import javax.imageio.stream.ImageInputStream; public class ImageReaderTest3 extends ImageReaderTest1 { public ImageReaderTest3(String filename) { super(filename); } protected Image readImage(String filename) { Iterator readers = ImageIO.getImageReadersBySuffix(getSuffix(filename)); if (readers.hasNext()) { ImageReader reader = (ImageReader)readers.next(); try { ImageInputStream stream = ImageIO.createImageInputStream(new File(filename)); reader.setInput(stream); ImageReadParam param = reader.getDefaultReadParam(); param.setSourceRegion(new Rectangle(200, 200, 400, 400)); param.setDestinationOffset(new Point(50, 0)); param.setSourceSubsampling(4, 2, 2, 1); Image image = reader.read(0, param); reader.dispose(); return image; } catch (IOException ex) { ex.printStackTrace(); } } return null; } public static void main(String[] args) { if (args.length == 1) { new ImageReaderTest3(args[0]); } else { System.out.println("Usage: java ImageReaderTest3 "); } } }