如果图片太大,我想调整图片的大小,但我希望它能保持图像的宽高比,我怎样才能定义它的高度并让它自动获得它?宽度?
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 :(得分: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 ) ;