Here you can find the source of makeRGBABufferedImageFromImage( Image image)
protected static BufferedImage makeRGBABufferedImageFromImage( Image image)
//package com.java2s; /*// www . j a v a2s . c om * Copyright 2006-2014 ICEsoft Technologies Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ import javax.swing.*; import java.awt.*; import java.awt.image.*; public class Main { protected static BufferedImage makeRGBABufferedImageFromImage( Image image) { if (image instanceof BufferedImage) { return (BufferedImage) image; } // This code ensures that all the pixels in the image are loaded image = new ImageIcon(image).getImage(); // Determine if the image has transparent pixels; for this method's // implementation, see Determining If an Image Has Transparent Pixels boolean hasAlpha = hasAlpha(image); // Create a buffered image with a format that's compatible with the screen BufferedImage bImage = null; try { // graphics environment calls can through headless exceptions so // proceed with caution. GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gs.getDefaultConfiguration(); // Determine the type of transparency of the new buffered image int transparency = Transparency.OPAQUE; if (hasAlpha) { transparency = Transparency.BITMASK; } // Create the buffered image int width = image.getWidth(null); int height = image.getHeight(null); if (width == -1 || height == -1) { return null; } bImage = gc.createCompatibleImage(image.getWidth(null), image.getHeight(null), transparency); } catch (HeadlessException e) { // The system does not have a screen } if (bImage == null) { // Create a buffered image using the default color model int type = BufferedImage.TYPE_INT_RGB; if (hasAlpha) { type = BufferedImage.TYPE_INT_ARGB; } int width = image.getWidth(null); int height = image.getHeight(null); if (width == -1 || height == -1) { return null; } bImage = new BufferedImage(width, height, type); } // Copy image to buffered image Graphics g = bImage.createGraphics(); // Paint the image onto the buffered image g.drawImage(image, 0, 0, null); g.dispose(); image.flush(); return bImage; } public static boolean hasAlpha(Image image) { // If buffered image, the color model is readily available if (image instanceof BufferedImage) { BufferedImage bufferedImage = (BufferedImage) image; return bufferedImage.getColorModel().hasAlpha(); } // Use a pixel grabber to retrieve the image's color model; // grabbing a single pixel is usually sufficient PixelGrabber pixelGrabber = new PixelGrabber(image, 0, 0, 1, 1, false); try { pixelGrabber.grabPixels(); } catch (InterruptedException e) { // fail quietly } // Get the image's color model ColorModel cm = pixelGrabber.getColorModel(); return cm == null || cm.hasAlpha(); } }