我在Java中给出了一个byte []数组,其中包含图像的字节,我需要将其输出到图像中。我该怎么做呢?
非常感谢
答案 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 []之一,具体取决于图像格式。