是否有一个函数可以将任何图像转换为 150x150 像素的圆圈-java?
Posted
技术标签:
【中文标题】是否有一个函数可以将任何图像转换为 150x150 像素的圆圈-java?【英文标题】:Is there a function that converts any image into a circle of 150x150 pixels-java? 【发布时间】:2017-02-26 10:28:39 【问题描述】:我需要一个函数/方法,可以将导入的(.png 格式)图像塑造(裁剪和调整大小)成一个精确的 150x150 像素的圆圈,并且它应该保持透明度。我在互联网上搜索过,我也有自己的代码,但我认为它完全没用。我需要这个函数来编写用于制作社交媒体应用程序数据库 GUI 的代码。
private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png"));
toCircle(logo);
我需要以下功能的代码:
public ImageIcon toCircle(ImageIcon icon)
//code
return icon;
这个函数应该转换这张图片:
到这里:
【问题讨论】:
*** 不是代码请求站点。这是一个问答网站,您可以在其中提出您在编程时遇到的问题,包括您所做的所有研究以及您在代码方面的最大努力,我们会针对您的具体问题给出答案。请阅读How to Ask。 我投票决定将此问题作为离题结束,因为它是对代码的请求而不是问题。 很抱歉我有我的代码,但我认为这会使问题变得混乱 【参考方案1】: 新建透明图片 从图像中获取Graphics
对象。
为图形对象设置剪辑。
绘制 PNG 格式的图像。
另请参阅this answer,它使用了裁剪区域。
【讨论】:
嗯...该链接提供了指向此问题的链接 Andrew:P 是的,链接现在已修复:) 1+【参考方案2】:对于这个用例,实施起来可能更直接的另一种方法是:
创建一个透明的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);
【讨论】:
以上是关于是否有一个函数可以将任何图像转换为 150x150 像素的圆圈-java?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何通用 Parse() 函数可以使用解析将字符串转换为任何类型?