我正在尝试将图像转换为字节数组并将其保存在数据库中。使用 ImageIO 方法的图像到字节转换和字节到图像转换在将其保存到数据库之前完全可以正常工作。但是当我从数据库 ImageIO 检索字节时返回 null。
FileInputStream fis = new FileInputStream(picturePath);
BufferedImage image = ImageIO.read(new File(picturePath));
BufferedImage img = Scalr.resize(image, Scalr.Mode.FIT_EXACT, 124, 133, Scalr.OP_ANTIALIAS);
ByteArrayOutputStream ByteStream = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", ByteStream);
ByteStream.flush();
byte[] imageBytes = ByteStream.toByteArray();
ByteStream.close();
PersonImage = imageBytes;
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(PersonImage);
BufferedImage ImageForBox = ImageIO.read((InputStream)byteArrayInputStream);
PersonImageBox.setIcon(new ImageIcon((Image)ImageForBox));
上面的代码是我在数据库中保存图片字节之前所做的。我调整图像的大小,然后将其转换为字节,然后以其他方式转换并在 JLabel 中显示它,它工作正常。但是当我从数据库中检索字节并使用相同的代码时,即
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(PersonImage); // PersonImage are bytes from dB.
BufferedImage ImageForBox = ImageIO.read((InputStream)byteArrayInputStream);
PersonImageBox.setIcon(new ImageIcon((Image)ImageForBox));
在这种情况下,ImageIO 返回 null。请帮忙。