当前位置: 首页 > 知识库问答 >
问题:

如何使图像大小适合ImageIcon和JLabel大小

太叔天宇
2023-03-14
public class Draw_JPanel extends JFrame{
       Load_image panel_im = new Load_image();
public void OpenImage()
{   
    JFileChooser fc = new JFileChooser();
    int result = fc.showOpenDialog(null);
    if(result == JFileChooser.APPROVE_OPTION)
    {
        File file = fc.getSelectedFile();
        String name = file.getName();
        try {
            image = ImageIO.read(file);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        imageic = new ImageIcon(image);
        height1 = imageic.getIconHeight();
        width1 = imageic.getIconWidth();
         picLabel = new JLabel(new ImageIcon(image));
         panel_im.add(picLabel,BorderLayout.CENTER);
    }
    this.pack();

}
public class Load_image extends JPanel{
public Load_image()
{   
    this.setBackground(Color.RED);
}
}

对不起,我不能上传图片

共有1个答案

仉联
2023-03-14

我为你写了一个简单的例子。它在imgscalr库的帮助下绘制图像并调整大小。也可以保存图像。试试看,我想这对你有帮助。

public class Example extends JPanel{

    private static BufferedImage scaledImg;

    public static void main(String[] args) {
        Example e = new Example();
        JFrame f = new JFrame();
        f.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1;
        c.weighty = 1;
        f.add(e,c);

        c.fill = GridBagConstraints.NONE;
        c.weightx = 0;
        c.weighty = 0;
        c.gridx = 1;
        JButton b = new JButton("save");
        b.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                File outputfile = new File("c:\\image.png");
                try {
                    ImageIO.write(scaledImg, "png", outputfile);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        f.add(b,c);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setVisible(true);
    }

    @Override
    protected void paintComponent(Graphics arg0) {
        super.paintComponent(arg0);
        Graphics2D g = (Graphics2D) arg0;
        BufferedImage img = null;
        try {
            img = ImageIO.read( Example.class.getResource("/res/3_disc.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        scaledImg = Scalr.resize(img,getSize().height,getSize().width,new BufferedImageOp[]{});
        g.drawImage (scaledImg, null, 0, 0);
    }

}

这里“/res/3_disc.png”是我的项目中的图像

“C:\\image.png”图像输出

 类似资料:
  • 问题内容: 我正在尝试从目录加载图像并将其作为图标放置在中。但是,当图像尺寸很大时,就不能完全放入标签中。我尝试调整图像的大小以适合标签,但无法正常工作。我可以知道我要去哪里了吗? 问题答案: BufferedImage img = ImageIO.read(…); Image scaled = img.getScaledInstance(500, 500, Image.SCALE_SMOOTH)

  • 问题内容: 嗨,我如何使ImageIcon的大小适合JButton?我想将ImageIcon的大小调整为Button的大小 问题答案: 您可以通过在项目中添加一些方法来做到这一点: 现在,在示例代码中使用此方法: 如果只需要图像而没有边框,只需将offset变量设置为0或完全摆脱offset变量。

  • 我有一个< code>JPanel到< code>JFrame中。我在< code>JPanel上加载了一张图片,但它只显示了图片的一部分:这是我所做的代码部分: 这就是它的样子: 完整的图片看起来像这样: 有没有办法将图片缩放到< code>JFrame的大小?预先感谢

  • 问题内容: 我正在制作一个具有以下布局()的Java Swing应用程序: 当用户添加或删除图标时,其他图标应缩小或增长。 我的问题很简单:我有一个包含;如何调整此图标的大小? 问题答案: 调整图标大小并不容易。您需要使用Java的2D图形来缩放图像。第一个参数是Image类,您可以从类中轻松获取。您可以使用class加载图像文件,然后只需调用getter方法即可获取图像。

  • 问题内容: 我正在尝试使图片适合JLabel。我希望将图片尺寸减小到更适合我的Swing JPanel。 我尝试使用setPreferredSize,但是它不起作用。 我想知道是否有一种简单的方法?我应该为此缩放图像吗? 问题答案: 大纲 这是要遵循的步骤。 将图片读取为BufferedImage。 将BufferedImage的大小调整为另一个JLabel大小的BufferedImage。 从调

  • 我正在尝试使图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel的尺寸。 我尝试使用setPreferredSize,但它不起作用。 我在想有没有一个简单的方法来做这件事?我应该为此缩放图像吗?