gpt4 book ai didi

java - 尝试使用 Java 中的 ImageIO.read 从 Oracle DB 读取图像 blob 不起作用

转载 作者:行者123 更新时间:2023-11-30 06:14:16 24 4
gpt4 key购买 nike

我有一些图像作为 blob 存储在 Oracle DB 中。我想读取它们并显示在 JLabel 中。读完它们后,我尝试使用 ImageIO.read 但它总是返回 null。请参阅下面的代码:

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 。没有其他异常或错误。任何帮助将不胜感激。

最佳答案

我终于意识到这是因为图像是 TIFF 图像。我无法使用默认的 ImageIO 库。我注意到这里有另一个 StackOverflow 线程 Can't read and write a TIFF image file using Java ImageIO standard library并使用了你的十二猴子库@haraldK,它工作得很好。非常感谢。

关于java - 尝试使用 Java 中的 ImageIO.read 从 Oracle DB 读取图像 blob 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49577225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com