2014-11-24 91 views
3

为什么bImageFromConvert即使有数据也会变为null?将字节转换为图像

BufferedImage img = null; 
byte[] s; 
ArrayList<Byte> f; 
InputStream in; 
BufferedImage bImageFromConvert; 

public void print(ArrayList<Byte> lst) throws IOException { 
    byte[] o = new byte[lst.size()]; 
    for (int i = 0; i < lst.size(); i++) { 
     o[i] = lst.get(i); 
    } 
    in = new ByteArrayInputStream(o); 
    bImageFromConvert = ImageIO.read(in); 
+1

不受支持或无法识别文件格式? ImageIO只能处理一些默认的图像类型(如jpg或png)。你的字节流应该代表什么图像格式? – cello 2014-11-24 20:50:06

+0

thx为你的回应,我解码jpg文件到字节数组 我想使用那些字节,我解码他们 – 2014-11-24 20:52:15

+0

我想尝试写出字节到一个新的文件,仅用于调试目的,并看看是否其他图像观众可以打开文件。我目前的猜测是,在将字节传递给显示的方法之前处理字节时出现问题。 – cello 2014-11-24 20:54:48

回答

3

还好,基于意见的讨论:

你有一个字节流代表每个像素RGB。

ImageIO.read()根据Javadoc的说法:“返回一个BufferedImage,作为对提供的InputStream进行解码并自动从当前已注册的ImageReader中选择的ImageReader。”。因此,ImageIO.read()通常不会期望RGB像素字节,而是编码为JPG或PNG。由于它无法将字节流识别为有效的图像编码,因此它将返回空值。

作为如何获得从RGB像素字节的图像可能的解决方案,然后对SO给出:How to convert array of bytes into Image in Java SE

+0

这就是我想thx很多^ _ ^ – 2014-11-24 21:37:12