我需要一个可以将导入(.png格式)图像塑造(裁剪和调整大小)为精确150x150像素的圆形的函数/方法,它应该保持透明度。我在互联网上搜索过,我也有自己的代码,但我觉得它完全没用。我需要这个函数用于制作社交媒体应用数据库GUI的代码。
private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png"));
toCircle(logo);
我需要以下功能的代码:
public ImageIcon toCircle(ImageIcon icon)
{
//code
return icon;
}
此功能应转换此图片:
对此:
答案 0 :(得分:3)
答案 1 :(得分:1)
另一种可能更直接地为此用例实现的方法是:
BufferedImage
Graphics2D
,设置抗锯齿的提示AlphaComposite.SrcIn
类似的东西:
public Icon toCircle(ImageIcon logo) {
BufferedImage image = new BufferedImage(150, 150); // Assuming logo 150x150
Graphics2D g = image.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.fillOval(1, 1, 148, 148); // Leaving some room for antialiasing if needed
g.setComposite(AlphaComposite.SrcIn);
g.drawImage(logo.getImage(), 0, 0, null);
g.dispose();
return new ImageIcon(image);
}