| Author |
anti-aliased image clipping
|
Eric Wagner
Greenhorn
Joined: May 19, 2005
Posts: 1
|
|
I could really use some help with this.. I am completely stuck! I want to take a square BufferedImage (created from a jpeg) and clip it with an inscribed circle, such that only a circular image cutout remains (and the exterior of the circle is transparent). However, I need to do this with anti-aliasing so that the edge of the circle is smooth. I have tried the following two methods, but neither one produces the correct result: //simply returns the original image private static BufferedImage cutoutCircle(BufferedImage img, int w, int h) { Graphics2D g2d = img.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Shape circle = new java.awt.geom.Ellipse2D.Double(0,0,w,h); g2d.setClip(circle); return img; } //cuts out circle but not anti-aliased private static BufferedImage cutoutCircle(BufferedImage orig, int w, int h) { BufferedImage bimg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = bimg.createGraphics(); //this is blank (transparent) g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Shape circle = new java.awt.geom.Ellipse2D.Double(0,0,w,h); g2d.setClip(circle); g2d.drawImage(orig, 0, 0, null); return bimg; }
|
 |
 |
|
|
subject: anti-aliased image clipping
|
|
|