Here you can find the source of save(Image image, File file, String formatName)
public static void save(Image image, File file, String formatName) throws Exception
//package com.java2s; //License from project: Open Source License import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.PixelGrabber; import java.io.*; public class Main { public static void save(Image image, File file, String formatName) throws Exception { FileOutputStream os = new FileOutputStream(file); ImageIO.write(toBufferedImage(image), formatName, os); }/*from w w w.j a v a 2 s .co m*/ public static BufferedImage toBufferedImage(Image image) throws Exception { if (image instanceof BufferedImage) { return (BufferedImage) image; } image = new ImageIcon(image).getImage(); boolean hasAlpha = hasAlpha(image); BufferedImage bimage = null; GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); int transparency = Transparency.OPAQUE; if (hasAlpha) { transparency = Transparency.BITMASK; } GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); bimage = gc.createCompatibleImage(image.getWidth(null), image.getHeight(null), transparency); if (bimage == null) { int type = BufferedImage.TYPE_INT_RGB; if (hasAlpha) { type = BufferedImage.TYPE_INT_ARGB; } bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type); } Graphics g = bimage.createGraphics(); g.drawImage(image, 0, 0, null); g.dispose(); return bimage; } public static boolean hasAlpha(Image image) throws InterruptedException { if (image instanceof BufferedImage) { BufferedImage bi = (BufferedImage) image; return bi.getColorModel().hasAlpha(); } PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false); pg.grabPixels(); ColorModel cm = pg.getColorModel(); return cm.hasAlpha(); } }