// PNGwrite.java write a .png file // java PNGwrite xxx.png import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import javax.imageio.*; public class PNGwrite extends Frame { private Image image; public PNGwrite(String filename) { Toolkit toolkit = Toolkit.getDefaultToolkit(); image = toolkit.getImage("colorw.png"); // input for test MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(image, 0); try { mediaTracker.waitForID(0); } catch(InterruptedException ie) { System.err.println(ie); System.exit(1); } addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);} }); setSize(image.getWidth(null)+20, image.getHeight(null)+50); setTitle(filename); setVisible(true); // show(); // stuff for writing RenderedImage rendImage = myRendImage(); try { File file = new File(filename); ImageIO.write(rendImage, "png", file); } catch(IOException e) { System.err.println(e); System.exit(1); } } public void paint(Graphics g) { g.drawImage(image, 10, 40, null); g.setColor(Color.red); g.fillRect(50,60, 40,60); g.setColor(Color.blue); g.drawString("add stuff to image", 150,150); } // more stuff for writing public RenderedImage myRendImage() { BufferedImage bufferedImage = new BufferedImage(500,500, BufferedImage.TYPE_INT_RGB); Graphics g = bufferedImage.createGraphics(); // must clear background g.setColor(Color.white); g.fillRect(0,0, 500,500); // duplicate normal drawing in paint g.drawImage(image, 10, 40, null); g.setColor(Color.red); g.fillRect(50,60, 40,60); g.setColor(Color.blue); g.drawString("add stuff to image", 150,150); // finished with g, return bufferedImage object g.dispose(); return bufferedImage; } public static void main(String[] args) { new PNGwrite(args[0]); } } // end class PNGwrite