我有一个简单的服务器端代码,接收一个字节数组表示一个JPEG格式的图像,并返回图像的尺寸。字节数组缓存图像转换慢
public String processImage(byte[] data) {
long startTime = System.currentTimeMillis();
ByteArrayInputStream stream = new ByteArrayInputStream(data);
BufferedImage bufferedImage;
bufferedImage = ImageIO.read(stream);
int height = bufferedImage.getHeight();
int width = bufferedImage.getWidth();
long endTime = System.currentTimeMillis();
return "height="+height+" | width="+width+" | elapsed="+(endTime-startTime);
}
它的工作原理,但问题是它是无法接受的缓慢。对于100KB的图片,需要6秒。对于900KB的图像,需要30秒。这是预期的吗?有没有办法使字节数组bufferedImage转换更快?
仅供参考,抓高度/宽度并不是我打算做的唯一事情。我最终想要处理bufferedImage。所以获得高度/宽度只是一个示例代码。
谢谢,我还没有尝试过,但我试图在一个孤立的环境中运行相同的代码,它只花了20毫秒200KB。所以这个问题看起来不像是代码。上述设置是做什么的? – baekacaek
@baekacaek:它将图形卡排除在等式之外。如果您从未计划在显示器上显示BufferedImage,则无需浪费时间将其加载到显卡的RAM中。我在本地尝试了你的代码片段,上面的命令行选项将测试图像上的运行时间从大约250ms降低到大约140ms。因人而异。 – Asaph