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

如何在jar文件中输出随机图像?

隆谦
2023-03-14

下面的代码在从我的编辑器运行时可以工作,但是当用eclipse编译成可运行的jar文件时,图像无法加载。

java prettyprint-override">    public static BufferedImage getRandomImage() {
        // returns a random image from the Images folder
        Random rand = new Random();
        URL res = Card.class.getResource("Images"); // located in /src/.../Images
        File f = new File(res.getFile());
        
        if (!f.exists()) {
            return new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
        }
        File[] files = f.listFiles();
        int random = rand.nextInt(files.length);
        BufferedImage img = null;
        try {
            img = ImageIO.read(files[random]);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return img;
    }

有人能建议我如何修改我的代码或编辑器,以便在编译时加载文件吗。

我读过其他访问文件的方法,但因为我需要从文件夹中随机选择,所以我需要使用File类。

共有1个答案

楚雪松
2023-03-14

问题是您试图以文件的形式访问资源的URL。

有了这个,你可以得到所有的图像,然后你可以这样做:

List<String> arr = getResourceFiles("Images");
String imgPath = arr.get(rand.nextInt(arr.size()));
InputStream stream = Card.class.getResourceAsStream(imgPath); //im not sure if you need to add "Images/" at the begining
try {
    img = ImageIO.read(stream);
} catch (IOException e) {
    e.printStackTrace();
}
return img;
 类似资料:
  • 问题内容: 我做了一个Java应用程序。并将所有类捆绑在jar文件中。.我从netbeans运行项目,我的应用程序运行成功..但是我将我的.jar文件放在另一个地方,然后从那里运行..我没有我的应用程序使用的图标..在代码中,我从项目文件夹中存在的images目录中获取我的图标。 现在,我想知道如何将这些图像文件呈现给最终用户(就像我们呈现.jar文件一样)。 问题答案: 似乎这里有两个问题: 在

  • 这个程序创建了一个名为datafile.txt的文件,并且应该使用文本I/O将100个随机创建的整数写入文件中。但是,我的输出是“java.util.Random@30c221”100次。我如何得到100个随机数?提前谢谢。

  • 问题内容: 我有这段代码,它从目录中读取所有文件。 效果很好。它使用目录“ text_directory”中所有以“ .txt”结尾的文件填充数组。 如何在 JAR文件中以类似方式读取目录的内容? 因此,我真正想要做的是列出我的JAR文件中的所有图像,这样我就可以加载它们: (之所以有效,是因为“ CompanyLogo”是“硬编码的”,但是JAR文件中的图像数量可以是10到200个可变长度。)

  • 好的,我在分发我的邮件时遇到了一些问题。jar文件。当我只是从NetBeans运行程序时,它可以工作,但是如果我尝试从dist文件夹运行它,它就不工作(没有图像被加载)。 以下是我的程序的层次结构: src/img/随机图像 src/myapp/源文件 我用这个函数加载图像: 在那之后: 在我构建我的项目之后,这些图像在jar文件中,但是它们没有被加载。你知道为什么吗?

  • 问题内容: 我如何寻找地图中的元素,我正在寻找与方法类似的东西。 问题答案: A的排序方式实际上不像,这意味着您无法按索引访问项目。因此,改组通常没有任何意义。但是您可以这样做(我在示例中省略了泛型):

  • 我正在尝试从可执行JAR文件加载图像。 我跟踪了这里的信息,然后是这里的信息。 这是检索图像的函数: 这就是它的名称: 这是一个简单的对象。我也不会得到NullPointerException,除非它被UI屏蔽。 我检查了JAR文件,图像位于: /图片/标识1。巴布亚新几内亚 当前代码在eclipse中以及导出到JAR并在终端中运行时都有效,但在双击JAR时不起作用,在这种情况下,图标是默认的JF