Java 调整图像大小

Java resize an image

我想在我的 Jframe 中的某个区域显示图像,但图像占用了很多 space。

我想把它的尺寸精确化。 我如何在 Java

中执行此操作

这是我的简单代码:

如果我没有使用正确的方法或正确的 class 实例化图像,我愿意接受任何建议。

import java.awt.*;
import javax.swing.*;

public class ExempleDeplace extends JFrame{

    private JLabel myLabel;

    public ExempleDeplace(){
         setLayout(new FlowLayout());
         setTitle("Fenetre, modele Duchi");
         setSize(500,700);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         JLabel j = new JLabel(new ImageIcon("src/images/bateau.png"));
         add(j);
         setVisible(true);
    }

    public static void main (String[] args) {    
          ExempleDeplace c = new ExempleDeplace();
    }
}

您可以将 JPanel 中的图像绘制为整个面板。然后,无论何时调整面板大小时,图像都会随之调整大小。这是一个快速 n-dirty 可运行演示:

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImgFrame extends JFrame {

    private static BufferedImage IMG;
    static{
        try {
            IMG = ImageIO.read(new File("img/Original_Doge_meme.jpg")); //Replace with your image path
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public ImgFrame(){
        add(new ImgPanel(), BorderLayout.CENTER);
        setSize(500,700);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    class ImgPanel extends JPanel{
        @Override
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            g.drawImage(IMG, 0, 0, getWidth(), getHeight(), this);
        }
    }

    public static void main(String[] args){
        new ImgFrame();
    }
}

调整图像大小可能更干净。我强烈推荐 filthyrichclients 提供的图像大小调整实用方法。

我实际上也强烈推荐 book,因为它是为数不多的真正展示 Swing 强大功能的书籍之一...

获得代码后,您将要调用

createCompatibleImage(myImage, myWidth,myHeight);