@Slf4j
public class BaseTest {
public static void main(String[] args) throws IOException {
// 指定要读取的图片路径
String imagePath = "path/to/your/image.jpg";
// 创建 BufferedImage 对象
File file = new File(imagePath);
BufferedImage bufferedImage = ImageIO.read(file);
// 读取远程图片
String url = "https://xx/I0JBQkFCMA==/dissolve/7";
BufferedImage avatarImage = ImageIO.read(new URL(url));
// 获取图片的宽度和高度
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
System.out.println("图片尺寸:" + width + " x " + height);
// 设置圆角
BufferedImage bufferedImageWithRadius = setRadius(bufferedImage);
// 保存图片到本地文件(可选)
String outputFilePath = "output/image.png";
File outputFile = new File(outputFilePath);
ImageIO.write(bufferedImageWithRadius, "PNG", outputFile);
System.out.println("已成功保存图片到:" + outputFilePath);
}
/**
* 图片设置圆角
* @param srcImage
* @return
* @throws
*/
public static BufferedImage setRadius(BufferedImage srcImage) {
int radius = (srcImage.getWidth() + srcImage.getHeight()) / 6;
return setRadius(srcImage, radius, 2, 5);
}
/**
* 图片设置圆角
* @param srcImage
* @param radius
* @param border
* @param padding
* @return
* @throws
*/
public static BufferedImage setRadius(BufferedImage srcImage, int radius, int border, int padding){
int width = srcImage.getWidth();
int height = srcImage.getHeight();
int canvasWidth = width + padding * 2;
int canvasHeight = height + padding * 2;
BufferedImage image = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D gs = image.createGraphics();
gs.setComposite(AlphaComposite.Src);
gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
gs.setColor(Color.WHITE);
gs.fill(new RoundRectangle2D.Float(0, 0, canvasWidth, canvasHeight, radius, radius));
gs.setComposite(AlphaComposite.SrcAtop);
gs.drawImage(setClip(srcImage, radius), padding, padding, null);
if(border !=0){
gs.setColor(Color.GRAY);
gs.setStroke(new BasicStroke(border));
gs.drawRoundRect(padding, padding, canvasWidth - 2 * padding, canvasHeight - 2 * padding, radius, radius);
}
gs.dispose();
return image;
}
/**
* 图片切圆角
* @param srcImage
* @param radius
* @return
*/
public static BufferedImage setClip(BufferedImage srcImage, int radius){
int width = srcImage.getWidth();
int height = srcImage.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D gs = image.createGraphics();
gs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
gs.setClip(new RoundRectangle2D.Double(0, 0, width, height, radius, radius));
gs.drawImage(srcImage, 0, 0, null);
gs.dispose();
return image;
}
}
Java :Graphics2D 图片设置圆角
于 2024-01-02 17:45:29 首次发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)