-
anti-aliased image clipping
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.
Also, I need the resulting BufferedImage to contain the anti-aliasing
itself, independent of the graphics context in which it happens to be
rendered.
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;
}
-
Just a short comment:
Code:
//simply returns the original image
private static BufferedImage cutoutCircle(BufferedImage img, int w, int h) {
Graphics2D g2d = img.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASI NG,
RenderingHints.VALUE_ANTIALIAS_ON);
Shape circle = new java.awt.geom.Ellipse2D.Double(0,0,w,h);
g2d.setClip(circle);
return img;
}
I cannot see what else this method should be able to return...
eschew obfuscation
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Development Centers
-- Android Development Center
-- Cloud Development Project Center
-- HTML5 Development Center
-- Windows Mobile Development Center
|