我想在我的GUI上使用java JLabel和自定义大小的Icon。像这样:
我使用此代码更改原始图标的大小:
ImageIcon imageIcon = (ImageIcon) jLabel1.getIcon();// new ImageIcon( "Play-Hot-icon.png");
ImageIcon thumbnailIcon = new ImageIcon(getScaledImage(imageIcon.getImage(), 25 , 25));
jLabel1.setIcon(thumbnailIcon);
这是调整大小图像的代码
private Image getScaledImage(Image srcImg, int w, int h){
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(srcImg, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}
但在调整图像大小并使用此代码后,结果就是这个! :
如何在JLabel上获得所需的图像?
的问候, sajad
答案 0 :(得分:4)
问题在于,当您创建缩放图像时,您使用BufferedImage.TYPE_INT_RGB
作为新图像,透明度仅使用TYPE_INT_RGB
呈现为黑色。
为了保持透明度,您需要将其替换为BufferedImage.TYPE_INT_ARGB
,因为您需要一个alpha组件。
然而,在imageIcon
的图像上调用Image.getScaledInstance将返回已经使用alpha分量的缩放图像,并且您可以传递提示提示以使用缩放图像的质量进行播放与getScaledImage
函数基本相同,但麻烦较少。