Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中字节到图像的转换_Java_Bytearray_Javax.imageio - Fatal编程技术网

java中字节到图像的转换

java中字节到图像的转换,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

我正在尝试将图像转换为字节数组,并将其保存在数据库中。在将图像保存到数据库之前,使用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));
上面的代码是我在将图片字节保存到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,我正在研究。检查客户端/服务器端和发送/接收方法。