有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使ImageIO从InputStream读取:Java

我已经创建了可执行的jar文件(使用Eclipse),有一组图像(.png)文件要嵌入到jar中。因此,我添加了一个源文件夹,其中包含项目中/images文件夹中的所有图像。代码必须访问这些文件才能使用ImageIO.read(new File(path);创建BuffereImage

早些时候, 要获取路径,我使用了ClassName.class.getResource(/image/test.png).toURI();

在执行jar时,它抛出错误URI不是分层的

所以现在我使用ClassName.class.getResourceAsStream(/image/test.png);

但是如何让ImageIO从Inputstream读取呢? 我试过如下的演员阵容

InputStreamReader resourceBuff=ClassName.class.getResourceAsStream(/image/test.png);
ImageIO.read((ImageInputStream) new InputStreamReader(resourceBuff));

它抛出错误InputStreamReader无法转换为ImageInputStream


共 (2) 个答案

  1. # 1 楼答案

    ^{}InputStream作为参数,因此将其强制转换为ImageInputStream没有任何意义

    其次,您不能将InputStreamReader对象强制转换为^{},因为ImageInputStream与您想到的InputStreamReader无关

    此外^{}返回InputStream。所以你可以直接这样做

    InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
    BufferedImage bf = ImageIO.read(resourceBuff);
    
  2. # 2 楼答案

    ImageIO类有一个实用方法来read一个InputStream并创建一个BufferedImage

    还有一种实用方法可以从InputStreamcreateImageInputStream