/**图片圆角处理,背景透明化
* @param srcImageFile 原图片
* @param result 处理后图片
* @param type 图片格式
* @param cornerRadius 720为圆角
*/
public void makeRoundedCorner(File srcImageFile, File result, String type, int cornerRadius) {
try {
BufferedImage bi1 = ImageIO.read(srcImageFile);
// 根据需要是否使用 BufferedImage.TYPE_INT_ARGB
BufferedImage image = new BufferedImage(bi1.getWidth(), bi1.getHeight(),
BufferedImage.TYPE_INT_ARGB);
Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1
.getHeight());
Graphics2D g2 = image.createGraphics();
image = g2.getDeviceConfiguration().createCompatibleImage(bi1.getWidth(), bi1.getHeight(), Transparency.TRANSLUCENT);
g2 = image.createGraphics();
g2.setComposite(AlphaComposite.Clear);
g2.fill(new Rectangle(image.getWidth(), image.getHeight()));
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC, 1.0f));
g2.setClip(shape);
// 使用 setRenderingHint 设置抗锯齿
g2 = image.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.fillRoundRect(0, 0,bi1.getWidth(), bi1.getHeight(), cornerRadius, cornerRadius);
g2.setComposite(AlphaComposite.SrcIn);
g2.drawImage(bi1, 0, 0, bi1.getWidth(), bi1.getHeight(), null);
g2.dispose();
ImageIO.write(image, type, result);
} catch (Exception e) {
// TODO: handle exception
}
}
java 图片圆角处理、背景透明化
最新推荐文章于 2024-07-23 10:03:31 发布