字节数组到Image对象

时间:2009-10-16 19:43:59

标签: java arrays image byte

我在Java中给出了一个byte []数组,其中包含图像的字节,我需要将其输出到图像中。我该怎么做呢?

非常感谢

4 个答案:

答案 0 :(得分:85)

BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));

答案 1 :(得分:22)

如果您知道图像的类型并且只想生成文件,则无需获取BufferedImage实例。只需将字节写入具有正确扩展名的文件即可。

OutputStream out = null;

try {
    out = new BufferedOutputStream(new FileOutputStream(path));
    out.write(bytes);
} finally {
    if (out != null) out.close();
}

答案 2 :(得分:1)

根据Java文档,看起来您需要使用the MemoryImageSource Class将您的字节数组放入内存中的对象,然后使用Component.createImage(ImageProducer)(传入MemoryImageSource,它实现ImageProducer中)。

答案 3 :(得分:1)

由于听起来您已经知道byte []数组的格式(例如RGB,ARGB,BGR等),您可以使用BufferedImage.setRGB(...)BufferedImage.getRaster()的组合和WritableRaster.setPixels(...)WritableRaster.setSamples(...)。不幸的是,这两种方法都要求您将byte []转换为int [],float []或double []之一,具体取决于图像格式。