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