字节数组到图像对象

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

非常感谢

5 Solutions collect form web for “字节数组到图像对象”

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

如果您知道图像的types,只想生成一个文件,则不需要获取BufferedImage实例。 只需将字节写入具有正确扩展名的文件。

 OutputStream out = null; try { out = new BufferedOutputStream(new FileOutputStream(path)); out.write(bytes); } finally { if (out != null) out.close(); } 
 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); 

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

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

  • '\ 0'评估为false,“\ 0”评估为true
  • 大小为0的数组
  • Java的 - 如何使用值的string数组?
  • recursion函数从数据库结果生成multidimensional array
  • 获取二维数组的长度
  • arrays与链表
  • 从数组中删除一个元素
  • 在Matlab中元素明智的数组复制