Попытка прочитать блоб изображения из оракула DB с ImageIO.read в Java не работает
У меня есть некоторые изображения, хранящиеся в оракуле БД как капли. Я хочу прочитать их и отобразить в JLabel. Прочитав их, я попытался использовать ImageIO.read, но он всегда возвращает ноль. Смотрите мой код ниже:
Blob blob = rs.getBlob(2);
BufferedImage frontImg = ImageIO.read(blob.getBinaryStream());
lblFrontImage.setIcon(new ImageIcon(frontImg));
Я могу сохранить изображение в файл, используя следующий код, поэтому я знаю, что изображение действительно:
Blob blob = rs.getBlob(2);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream("test.jpg");
byte[] buff = new byte[4096];
int len = 0;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
out.close();
Другие способы я пытался отобразить изображение в JLabel
byte[] frontBytes = rs.getBytes(2);
BufferedImage frontImg = ImageIO.read(new
ByteArrayInputStream(fileContent));
lblFrontImage.setIcon(new ImageIcon(frontImg));
А также
byte[] frontBytes = rs.getBytes(2);
BufferedImage image;
ByteArrayInputStream bis = new ByteArrayInputStream(frontBytes);
image = ImageIO.read(bis);
bis.close();
lblFrontImage.setIcon(new ImageIcon(image));
Также
InputStream in = blob.getBinaryStream();
image = ImageIO.read(in);
byte[] frontImgBytes = blob.getBytes(1, (int) blob.length());
System.out.println("front bytes length: ====\n" + frontImgBytes.length);
BufferedImage frontImage = ImageIO.read(new
ByteArrayInputStream(frontImgBytes));
lblFrontImage.setIcon(new ImageIcon(frontImage));
Перепробовал много способов, просто продолжай получать java.lang.NullPointerException
, Никаких других исключений или ошибок. Любая помощь будет оценена.
1 ответ
Я наконец понял, что это были изображения TIFF. Я не мог использовать библиотеки ImageIO по умолчанию. Я заметил другой поток Stackru здесь. Не могу прочитать и записать файл изображения TIFF, используя стандартную библиотеку Java ImageIO, и использовал ваши библиотеки двенадцати ключей @haraldK, и это работало нормально. Большое спасибо.