Как заставить ImageIO читать из InputStream: Java
Я создал исполняемый файл jar (используя Eclipse), есть набор изображений (.png) файлы, которые должны быть внедрены в банку. Поэтому я добавил исходную папку со всеми изображениями внутри /images папка в проекте . Код должен получить доступ к этим файлам для создания BufferedImage с помощью ImageIO.read(new File(path);
ранее,
Чтобы получить путь, который я использовал 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 ответов
ImageIO.read() принимает InputStream в качестве параметра, поэтому нет смысла бросать его в ImageInputStream.
во-вторых, вы не можете бросить InputStreamReader объект ImageInputStream, потому что ImageInputStream не имеет ничего общего с InputStreamReader что вы подумали.
getResourceAsStream() возвращает InputStream. Таким образом, вы можете сделать это прямо так.
InputStream resourceBuff = YourClass.class.getResourceAsStream(filepath);
BufferedImage bf = ImageIO.read(resourceBuff);