【问题标题】:Java - how to auto set width for img.getScaledInstance( );?Java - 如何为 img.getScaledInstance() 自动设置宽度;?
【发布时间】:2015-12-12 14:24:58
【问题描述】:

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

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

【问题讨论】:

  • 您总是可以通过将旧高度除以新高度(或宽度)来获得比率。

标签: java resize height


【解决方案1】:

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

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

然后你可以设置宽度

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

【讨论】:

  • 哇,谢谢!仍然需要将 Width 解析为 int 就可以了!
【解决方案2】:

复制自Javadocs

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

所以你可以这样做,

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

【讨论】:

  • 从来不知道那是最好的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2015-07-24
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
相关资源
最近更新 更多