我在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< 1280×720!应该是更少的工作和更少的带宽!
干杯!
答案 0 :(得分:3)
已知getScaledInstance很慢,例如请参阅this article以获取详细说明。
请注意你的
BufferedImage buffered = new BufferedImage(300, 300, BufferedImage.SCALE_FAST);
行是错误的,这里为第三个参数你应该指定图像类型(TYPE_INT_RGB,TYPE_INT_ARGB,TYPE_INT_ARGB_PRE等)而不是SCALE_FAST(它甚至不是BufferedImage中的字段)