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