首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整图片大小以适合JLabel

问调整图片大小以适合JLabel
EN

Stack Overflow用户
提问于 2013-05-03 00:25:48
回答 8查看 168.3K关注 0票数 36

我在试着让一张照片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel的尺寸。

我尝试使用setPreferredSize,但它不起作用。

我想知道是否有简单的方法可以做到这一点?我应该为此缩放图像吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-05-03 03:14:12

提纲

以下是要遵循的步骤。

  • 将图片作为BufferedImage.
  • Resize BufferedImage读取到另一个与BufferedImage大小相同的JLabel。
  • 从调整大小的the创建ImageIcon

您不必设置JLabel的首选大小。一旦您将图像缩放到您想要的大小,JLabel将采用ImageIcon的大小。

将图片作为BufferedImage阅读

代码语言:javascript
复制
BufferedImage img = null;
try {
    img = ImageIO.read(new File("strawberry.jpg"));
} catch (IOException e) {
    e.printStackTrace();
}

调整BufferedImage的大小

代码语言:javascript
复制
Image dimg = img.getScaledInstance(label.getWidth(), label.getHeight(),
        Image.SCALE_SMOOTH);

确保标签的宽度和高度与原始图像的宽度和高度的比例相同。换句话说,如果图片是600 x 900像素,则缩放到100 x 150。否则,您的图片将会失真。

创建ImageIcon

代码语言:javascript
复制
ImageIcon imageIcon = new ImageIcon(dimg);
票数 77
EN

Stack Overflow用户

发布于 2015-10-01 19:02:53

你可以尝试一下:

代码语言:javascript
复制
ImageIcon imageIcon = new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT));
label.setIcon(imageIcon);

或者一行:

代码语言:javascript
复制
label.setIcon(new ImageIcon(new ImageIcon("icon.png").getImage().getScaledInstance(20, 20, Image.SCALE_DEFAULT)));

执行时间比文件和ImageIO快得多。

我建议您在循环中比较这两种解决方案。

票数 35
EN

Stack Overflow用户

发布于 2015-12-09 09:12:24

代码语言:javascript
复制
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;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16343098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档