是否有一个函数可以将任何图像转换为 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() 函数可以使用解析将字符串转换为任何类型?

是否有任何默认的 PHP 函数可以将天数转换为分钟或秒数?

是否可以将 png 转换为分层的 PSD 文件?

是否有任何 PHP 函数可以将数字转换为具有千位分隔符的货币?

如何将手写图像转换为笔坐标?

在 C#/.NET 中合并两个图像