java中字节到图像的转换
我正在尝试将图像转换为字节数组,并将其保存在数据库中。在将图像保存到数据库之前,使用ImageIO方法进行的图像到字节转换和字节到图像转换工作完全正常。但当我从数据库检索字节时,ImageIO返回nulljava中字节到图像的转换,java,bytearray,javax.imageio,Java,Bytearray,Javax.imageio,我正在尝试将图像转换为字节数组,并将其保存在数据库中。在将图像保存到数据库之前,使用ImageIO方法进行的图像到字节转换和字节到图像转换工作完全正常。但当我从数据库检索字节时,ImageIO返回null FileInputStream fis = new FileInputStream(picturePath); BufferedImage image = ImageIO.read(new File(picturePath)); BufferedImage img = Scalr.resiz
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之前所做的。我调整图像大小,然后将其转换为字节,然后以其他方式转换并在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。请帮忙 我看你的代码是正确的,但我看不出你把它发送到了数据库的什么地方。我想这就是问题所在。@SteveP。非常感谢,但我在发布这个问题后很快就明白了。问题在于从DB接收字节。我在数组的开头多了一个字节,这就是ImageIO无法检测到格式的原因,这也是它无法将其与列出的格式匹配的原因。因此ImageIO返回NULL。在调整了字节数组之后,一切都很顺利。我知道这与这里没有的东西有关,因为它看起来都是正确编码的。你知道为什么会有额外的字节吗?还没有Steve,我正在研究。检查客户端/服务器端和发送/接收方法。