java jlabel 大小_如何调整JLabel ImageIcon的大小?

我同意此代码的工作,以大小一个ImageIcon从文件以用于显示,同时保持我已经使用了以下的纵横比。

/*

* source File of image, maxHeight pixels of height available, maxWidth pixels of width available

* @return an ImageIcon for adding to a label

*/

public ImageIcon rescaleImage(File source,int maxHeight, int maxWidth)

{

int newHeight = 0, newWidth = 0; // Variables for the new height and width

int priorHeight = 0, priorWidth = 0;

BufferedImage image = null;

ImageIcon sizeImage;

try {

image = ImageIO.read(source); // get the image

} catch (Exception e) {

e.printStackTrace();

System.out.println("Picture upload attempted & failed");

}

sizeImage = new ImageIcon(image);

if(sizeImage != null)

{

priorHeight = sizeImage.getIconHeight();

priorWidth = sizeImage.getIconWidth();

}

// Calculate the correct new height and width

if((float)priorHeight/(float)priorWidth > (float)maxHeight/(float)maxWidth)

{

newHeight = maxHeight;

newWidth = (int)(((float)priorWidth/(float)priorHeight)*(float)newHeight);

}

else

{

newWidth = maxWidth;

newHeight = (int)(((float)priorHeight/(float)priorWidth)*(float)newWidth);

}

// Resize the image

// 1. Create a new Buffered Image and Graphic2D object

BufferedImage resizedImg = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = resizedImg.createGraphics();

// 2. Use the Graphic object to draw a new image to the image in the buffer

g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);

g2.drawImage(image, 0, 0, newWidth, newHeight, null);

g2.dispose();

// 3. Convert the buffered image into an ImageIcon for return

return (new ImageIcon(resizedImg));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值