| PNG_Writer |

    package ij.plugin;
    import ij.*;
    import ij.io.*;
    import ij.process.*;
    import java.awt.*;
    import java.io.*;
    import java.awt.image.*;
    import javax.imageio.ImageIO;

    /** Saves in PNG format using the ImageIO class  available in java 1.4 or later.  */
    public class PNG_Writer implements PlugIn {
        ImagePlus imp;

        public void run(String path) {
            if (!IJ.isJava14()) {
                IJ.showMessage("PNG Writer" , "The command requires java 1.4 or later");
                return;
            }
            imp = WindowManager.getCurrentImage();
            if (imp==null)
                {IJ.noImage(); return;}

            if (path.equals("")) {
                SaveDialog sd = new SaveDialog("Save as PNG...", imp.getTitle(), ".png");
                String name = sd.getFileName();
                if (name==null)
                    return;
                String dir = sd.getDirectory();
                path = dir + name;
            }

            try {
                writeImage(imp, path);
            } catch (Exception e) {
                String msg = e.getMessage();
                if (msg==null || msg.equals(""))
                    msg = ""+e;
                IJ.showMessage("PNG Writer", "An error occured writing the file.\n \n" + msg);
            }
            IJ.showStatus("");
        }

        void writeImage(ImagePlus imp, String path) throws Exception {
            int width = imp.getWidth();
            int  height = imp.getHeight();
            BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = (Graphics2D)bi.getGraphics();
            g.drawImage(imp.getImage(), 0, 0, null);
            File f = new File(path);
            ImageIO.write(bi, "png", f);
        }

    }

| PNG_Writer |