Java:慢图像比例

时间:2014-12-16 19:05:14

标签: java webserver raspberry-pi image-scaling image-size

我在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!应该是更少的工作和更少的带宽!

干杯!

1 个答案:

答案 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中的字段)

另见:How to scale a BufferedImage

对于质量降级,请参阅:Quality of Image after resize very low -- Java