2017-02-26 43 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

謝謝你這是好的 –

相關問題