如何从项目文件夹中检索图像? [英] How to retrieve image from project folder?

查看:29
本文介绍了如何从项目文件夹中检索图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个 Java 桌面应用程序,在其中我有一个 JLabel 用于调整图像.我正在从我 PC 的任何驱动器上的文件夹中检索图像.现在我想从图像文件夹名称可用的项目文件夹中检索所有图像.

I am trying to make a Java desktop application where I have a JLabel where I shuffle images. I am retrieving images from a folder which is on any drive of my PC. Now I want to retrieve all the images from a project folder where the images' folder name is available.

 F:/>Kiosk
             |
             |___src
             |
             |___lib
             |
             |___koisk
                   |
                   |__main1.java
             |
             |__images

这是我的代码我怎样才能做到这一点?

Here is my code How can i achieve this?

public class ImageShuffle1 extends JPanel {

    private List<BufferedImage> list = new ArrayList<BufferedImage>();
    private List<BufferedImage> shuffled;
    private JLabel label = new JLabel();

    private int width = 700;
    private int height = 700;

    private Timer timer = new Timer(1000, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            update();
        }
    });

    public ImageShuffle1() {

        try {
            list.add(resizeImage(ImageIO.read(new File("E:\SOFTWARE\TrainPIS\res\drawable\c.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\SOFTWARE\TrainPIS\res\drawable\d.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\SOFTWARE\TrainPIS\res\drawable\e.jpg"))));
            list.add(resizeImage(ImageIO.read(new File("E:\SOFTWARE\TrainPIS\res\drawable\f.jpg"))));
        } catch (IOException e) {
            e.printStackTrace();
        }

        shuffled = new ArrayList<BufferedImage>(list);
        Collections.shuffle(shuffled);
        timer.start();
    }

    private BufferedImage resizeImage(BufferedImage originalImage) throws IOException {
        BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = resizedImage.createGraphics();
        g.drawImage(originalImage, 0, 0, width, height, null);
        g.dispose();
        return resizedImage;
    }

    private void update() {
        if (shuffled.isEmpty()) {
            shuffled = new ArrayList<BufferedImage>(list);
            Collections.shuffle(shuffled);
        }

        BufferedImage icon = shuffled.remove(0);
        label.setIcon(new ImageIcon(icon));
    }

    private void display() {
        JFrame f = new JFrame("ImageShuffle");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.add(label);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ImageShuffle1().display();
            }
        });
    }
}

提前致谢

推荐答案

将项目中的 images 文件夹中的所有图像与 src 文件夹平行.

Put all the images in images folder that you have in your project in parallel to src folder.

 F:/>Kiosk
             |
             |___src
             |
             |___lib
             |
             |___koisk
                   |
                   |__main1.java
             |
             |__images
                |
                |__c.jpg
                |__d.jpg
                |__e.jpg
                |__f.jpg

使用此代码

list.add(resizeImage(ImageIO.read(new File("images\c.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\d.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\e.jpg"))));
list.add(resizeImage(ImageIO.read(new File("images\f.jpg"))));

<小时>

-- 编辑 --


-- EDIT --

你可以尝试任何一个

// Read from same package 
list.add(resizeImage(ImageIO.read(getClass().getResourceAsStream("c.png"))));

// Read from absolute path
list.add(resizeImage(ImageIO.read(new File("E:\SOFTWARE\TrainPIS\res\drawable\c.png"))));

// Read from images folder parallel to src in your project
list.add(resizeImage(ImageIO.read(new File("images\c.jpg"))));

对所有四个图像重复任何一个.

Repeat any one for all four images.

这篇关于如何从项目文件夹中检索图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆