字节数组到图像对象

Posted

技术标签:

【中文标题】字节数组到图像对象【英文标题】:Byte Array to Image object 【发布时间】:2010-12-07 11:50:02 【问题描述】:

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

非常感谢

【问题讨论】:

【参考方案1】:
BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));

【讨论】:

这没有回答问题,问题是写入图像文件。此答案用于从图像文件中读取。所有的赞成票是怎么回事? 标题是这样说的,但问题是他们有一个字节数组并且需要一个图像,这就是它的作用。【参考方案2】:

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

try (OutputStream out = new BufferedOutputStream(new FileOutputStream(path))) 
    out.write(bytes);

【讨论】:

【参考方案3】:
From Database.
Blob blob = resultSet.getBlob("pictureBlob");               
byte [] data = blob.getBytes( 1, ( int ) blob.length() );
BufferedImage img = null;
try 
img = ImageIO.read(new ByteArrayInputStream(data));
 catch (IOException e) 
    e.printStackTrace();

drawPicture(img);  //  void drawPicture(Image img);

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于字节数组到图像对象的主要内容,如果未能解决你的问题,请参考以下文章

图像到字节数组 - ExternalException

如何将字节数组中的图像发送到从android到具有Flask的python的url [重复]

图像到字节数组到字符串(反之亦然)

将 VideoFrame 转换为字节数组

在 Qml 中从字节数组加载到图像

将图像读取到字节数组并更改它