Java - 如何为img.getScaledInstance()自动设置宽度;?

时间:2015-09-16 06:24:51

标签: java resize height

如果图片太大,我想调整图片的大小,但我希望它能保持图像的宽高比,我怎样才能定义它的高度并让它自动获得它?宽度?

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);

2 个答案:

答案 0 :(得分:3)

你应该做一些数学。找到高度和旧高度的比例,然后找到新的宽度

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

然后你可以设置宽度

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

答案 1 :(得分:2)

Javadocs复制,

  

如果宽度或高度为负数,则替换值以保持原始图像尺寸的宽高比。如果宽度和高度均为负值,则使用原始图像尺寸。

所以你可以这么做,

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