2017-02-26 44 views
-1

我需要一个函数/方法,可以将导入的(.png格式)图像模型化(裁切和调整大小)为精确的150x150像素的圆,并且应该保持透明。我搜索了所有的互联网,也有我自己的代码,但我认为它完全无用。我需要使用这个函数来创建社交媒体应用数据库的GUI。有没有一种功能可以将任何图像转换为150x150像素的圆圈-java?

private ImageIcon logo = new ImageIcon(getClass().getResource("/test/test200x200.png")); 
toCircle(logo); 

我需要下面的函数代码:

public ImageIcon toCircle(ImageIcon icon) 
{ 
    //code 
    return icon; 
} 

这个功能应该转换这样的画面:

要这样:

+0

的StackOverflow是不是代码请求的网站。这是一个问答网站,您可以在其中介绍编程时遇到的问题,包括您所做的所有研究和代码的最佳努力,并且针对您的具体问题给出答案。请阅读[问]。 – RealSkeptic

+0

我投票结束这个问题作为题外话,因为它是一个代码而不是一个问题的请求。 – RealSkeptic

+0

对不起,我有我的代码,但我认为它会使问题混淆 –

回答

3
  • 创建一个新的透明图像
  • 获取从图像Graphics对象。
  • 设置图形对象的剪辑。
  • 绘制PNG格式图像。

另请参阅使用剪切区域的this answer

+0

谢谢。正在寻找这个 –

+1

嗯...链接提供的指向这个问题的链接Andrew:P – Frakcool

+1

@Frakcool D'Oh!尝试编辑的链接。 :P –

0

另一种方法,这可能是更直接的实现这个用例是:

  • 创建图标的透明BufferedImage大小
  • 从创建Graphics2D图像,设置提示antialias
  • 填写您的背景圆的大小的圆圈
  • Draw th在你的圈子的顶级电子图像,使用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); 
} 
+0

谢谢你这是好的 –

相关问题