我在试着让一张照片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel的尺寸。
我尝试使用setPreferredSize,但它不起作用。
我想知道是否有简单的方法可以做到这一点?我应该为此缩放图像吗?
发布于 2013-05-03 03:14:12
提纲
以下是要遵循的步骤。
您不必设置JLabel的首选大小。一旦您将图像缩放到您想要的大小,JLabel将采用ImageIcon的大小。
将图片作为BufferedImage阅读
BufferedImage img = null;
try {
img = ImageIO.read(new File("strawberry.jpg"));
} catch (IOException e) {
e.printStackTrace();
}调整BufferedImage的大小
Image dimg = img.getScaledInstance(label.getWidth(), label.getHeight(),
Image.SCALE_SMOOTH);确保标签的宽度和高度与原始图像的宽度和高度的比例相同。换句话说,如果图片是600 x 900像素,则缩放到100 x 150。否则,您的图片将会失真。
创建ImageIcon
ImageIcon imageIcon = new ImageIcon(dimg);发布于 2015-10-01 19:02:53
你可以尝试一下:
ImageIcon imageIcon = new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT));
label.setIcon(imageIcon);或者一行:
label.setIcon(new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)));执行时间比文件和ImageIO快得多。
我建议您在循环中比较这两种解决方案。
发布于 2015-12-09 09:12:24
public static void main(String s[])
{
BufferedImage image = null;
try
{
image = ImageIO.read(new File("your image path"));
} catch (Exception e)
{
e.printStackTrace();
}
ImageIcon imageIcon = new ImageIcon(fitimage(image, label.getWidth(), label.getHeight()));
jLabel1.setIcon(imageIcon);
}
private Image fitimage(Image img , int w , int h)
{
BufferedImage resizedimage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedimage.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img, 0, 0,w,h,null);
g2.dispose();
return resizedimage;
}https://stackoverflow.com/questions/16343098
复制相似问题