我正在尝试将Image转换为Byte Array并将其保存在数据库中。图像到字节转换和字节到图像转换使用ImageIO方法在将其保存到数据库之前完全正常。但是当我从Database 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));
上面的代码是我在DB中保存图片字节之前所做的。我调整Image的大小,然后将其转换为字节,然后转换为其他方式并在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。请帮忙。