2015-09-16 36 views
0

我想調整圖像的大小,如果它太大,但我希望它保持縱橫比,我怎麼才能定義它的高度,並讓它自動得到它的寬度?Java - 如何自動設置img.getScaledInstance()的寬度?

ImageIcon image2 = new ImageIcon(image); 

//Check if image size is more than 200 

if(!checking){ 
    Image img = image2.getImage() ; 
    Image newimg = img.getScaledInstance("What to put here?", 200, java.awt.Image.SCALE_SMOOTH) ; 
    image2 = new ImageIcon(newimg); 
} 

JButton newimage = new JButton(image2); 
+0

您隨時可以通過新的高度(或寬度)除以身高老弄的比例。 – Lemonov

回答

2

Javadocs複製,

如果寬度或高度是負數,則會替換一個值以保持原始圖像尺寸的縱橫比。如果寬度和高度均爲負數,則使用原始圖像尺寸。

所以,你可能只是這樣做,

img.getScaledInstance(-1, 200, java.awt.Image.SCALE_SMOOTH) ; 
+0

從來不知道這是最好的方式 –

+0

哇這更短!謝謝 –

2

你應該做一些maths.find高度和老高度的比例,然後找到新的寬度

double Width=(200/(double)image2.getIconHeight())*image2.getIconWidth(); 

那麼你可以設置寬度

Image newimg = img.getScaledInstance(Width, 200, java.awt.Image.SCALE_SMOOTH) ; 
+0

WOW THX!仍然需要將寬度解析爲int,就是這樣! –