将字节转换为图像

时间:2014-11-24 20:47:39

标签: java image

为什么即使有数据,bImageFromConvert也会变为空?

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 个答案:

答案 0 :(得分:3)

好的,基于评论中的讨论:

您有一个字节流,表示每像素RGB。

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

然后在SO上给出关于如何从RGB像素字节获取图像的可能解决方案:How to convert array of bytes into Image in Java SE