import java.awt.image.BufferedImage; import java.awt.Image; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageOutputStream; public class ImageWriterTest1 { public ImageWriterTest1() {} public ImageWriterTest1(String sourceFile, String destinationFile) { BufferedImage image = readImage(sourceFile); writeImage(image, destinationFile); } protected BufferedImage 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, true); return reader.read(0); } catch (IOException ex) { ex.printStackTrace(); } } return null; } protected void writeImage(BufferedImage image, String filename) { Iterator writers = ImageIO.getImageWritersByFormatName(getSuffix(filename)); if (writers.hasNext()) { ImageWriter writer = (ImageWriter)writers.next(); try { ImageOutputStream stream = ImageIO.createImageOutputStream(new File(filename)); writer.setOutput(stream); writer.write(image); writer.dispose(); return; } catch (IOException ex) { ex.printStackTrace(); } } } protected String getSuffix(String filename) { int i = filename.lastIndexOf('.'); if(i>0 && i "); } } }