我试图通过使用java的套接字发送多个图像,但我需要更快的方式将图像转换为字节数组,以便我可以发送它们。我尝试了下面的代码,但它向我的C:\驱动器写了大约10,000个图像。有没有办法在不写入磁盘的情况下进行这种转换?谢谢!Java-将bufferedimage转换为byte []而不写入磁盘
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//ImageIO.setUseCache(false);
ImageIO.write(bi.getImage(), "jpg", outputStream);
byte[] imageBytes = outputStream.toByteArray();
注意一点额外的时间做使用更高的压缩图像压缩(低质量)JPEG可以节省大量的网络时间。我认为你需要考虑实际发送的字节大小,在纯粹的'BufferedImage'中会更大。顺便说一句 - 这些图像的来源是什么?如果是例如截图,通常PNG可以提供比默认压缩JPEG更小的字节大小。如果它是连续的截图,甚至可能是一个视频流。 – 2012-04-20 13:47:36
来源是我基本上制作成流的连续截图。但是,是的,我需要弄清楚如何压缩图像而不写入磁盘。这是我的终极目标 – tier1 2012-04-20 15:08:11