Как заставить 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);