【发布时间】:2015-02-15 04:50:07
【问题描述】:
我在java中使用这个代码:
Image img = ImageIO.read(new File("imagepath/file.png").getScaledInstance(300, 300, BufferedImage.SCALE_SMOOTH);
BufferedImage buffered = new BufferedImage(300, 300, BufferedImage.SCALE_FAST);
buffered.getGraphics().drawImage(img, 0, 0 , null);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(buffered, "png", os);
InputStream in = new ByteArrayInputStream(os.toByteArray());
return in;
这成功缩小并使用我的笔记本电脑在浏览器中显示缩略图。但是,当我在我的迷你服务器(Raspberry Pi)上启动它时,速度非常慢。更准确的是加载实际全分辨率图像的时间大约 4 倍。
谁能告诉我这怎么可能? 300x300
干杯!
【问题讨论】:
-
您是否将调整大小的图像保存在某处?如果没有,您基本上每次请求图像时都会重做调整大小操作。请注意,1280x720 .jpg 图像需要约 2.7 兆内存才能以原始位图格式存储在内存中。 Pi 并不完全是系统的速度恶魔。
-
因为 Raspberry Pi 的处理器比您的笔记本电脑慢得多,并且调整图像大小是一项处理器密集型操作。
-
@MarcB 哇 2.7MB!?真的那么糟糕吗 :S 有没有办法让它更无缝地融入流或缓存要走的路?
-
1280x720 = 921,600 像素。 24 位图像 = 3 字节/像素,因此 921,600 * 3 = ~2.65meg。
标签: java webserver raspberry-pi image-scaling image-size