Java Graphics How to - Create Image with Transparent pixel








Question

We would like to know how to create Image with Transparent pixel.

Answer

import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.net.URL;
//  ww  w . ja va  2s .co m
import javax.imageio.ImageIO;

public class Main {

    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.java2s.com/style/download.png");
        BufferedImage image = ImageIO.read(url);

        int w = image.getWidth();
        int h = image.getHeight();
        Ellipse2D.Double ellipse1 = new Ellipse2D.Double(10,10,20,30); 
        Ellipse2D.Double ellipse2 = new Ellipse2D.Double(15,15,20,30);
        Area circle = new Area(ellipse1);
        circle.subtract(new Area(ellipse2));

        BufferedImage result = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB); 
        Graphics2D g = result.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        g.setClip(circle);
        g.drawImage(image, 0, 0, null);
        g.dispose();

        ImageIO.write( result, "png", new File( "result.png" ) ); 
    }
}