如何从项目文件夹中检索图像? [英] How to retrieve image from project folder?
本文介绍了如何从项目文件夹中检索图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试制作一个 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屋!
查看全文