是否有将任何图像转换为 150x150 像素-java 的圆的函数?
Is there a function that converts any image into a circle of 150x150 pixels-java?
我需要一个 function/method 可以将导入的(.png 格式)图像塑造(裁剪和调整大小)为一个精确的 150x150 像素的圆圈,并且它应该保持透明度。我在互联网上搜索过,我也有自己的代码,但我认为它完全没用。我需要这个函数用于我用来制作社交媒体应用程序数据库的 GUI 的代码。
private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png"));
toCircle(logo);
我需要以下功能的代码:
public ImageIcon toCircle(ImageIcon icon)
{
//code
return icon;
}
这个函数应该转换这张图片:
为此:
- 新建透明图片
- 从图像中获取一个
Graphics
对象。
- 为图形对象设置剪辑。
- 绘制 PNG 格式图像。
另见 this answer 使用裁剪区域。
对于此用例实施起来可能更直接的替代方法是:
- 创建透明
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);
}
我需要一个 function/method 可以将导入的(.png 格式)图像塑造(裁剪和调整大小)为一个精确的 150x150 像素的圆圈,并且它应该保持透明度。我在互联网上搜索过,我也有自己的代码,但我认为它完全没用。我需要这个函数用于我用来制作社交媒体应用程序数据库的 GUI 的代码。
private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png"));
toCircle(logo);
我需要以下功能的代码:
public ImageIcon toCircle(ImageIcon icon)
{
//code
return icon;
}
这个函数应该转换这张图片:
为此:
- 新建透明图片
- 从图像中获取一个
Graphics
对象。 - 为图形对象设置剪辑。
- 绘制 PNG 格式图像。
另见 this answer 使用裁剪区域。
对于此用例实施起来可能更直接的替代方法是:
- 创建透明
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);
}