将字节转换为图像

3
为什么bImageFromConvert得到了null,即使o有数据?
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
感谢您的回复,我已将JPG文件解码为字节数组。 我想使用我解码的那些字节获取它。 - Basil Battikhi
我会尝试将字节写入一个新文件,仅用于调试目的,并查看其他图像查看器是否可以打开该文件。我目前的猜测是,在传递给显示方法之前处理字节时出现了问题。 - cello
我只有一张图片,通过使用调试,我确信100% O 已经获得了值 i,如果我将这些字节写入文件,那么从文件中读取它是否有效? 如果我想填充 BufferedImage,应该使用什么? - Basil Battikhi
1
你传递的字节是编码后的字节(例如像jpg这样的格式),还是原始像素字节(例如每个像素的三个字节RGB)?我认为ImageIO.read()期望第一种情况。 - cello
每个像素的RGB。 - Basil Battikhi
1个回答

3

好的,根据评论中的讨论:

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接