Image img = ImageIO.read(new File("test.jpg")).getScaledInstance(100, 100, BufferedImage.SCALE_SMOOTH); 这将创建一个 100x100 像素的缩略图作为图像对象。如果您想将其写回磁盘,只需将代码转换为: BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); img.createGraphics().drawImage(ImageIO.read(new File("test.jpg")).getScaledInstance(100, 100, Image.SCALE_SMOOTH),0,0,null); ImageIO.write(img, "jpg", new File("test_thumb.jpg")); 此外,如果您担心速度问题(如果您想缩放许多图像,上述方法相当慢),请使用这些方法和以下声明: private BufferedImage scale(BufferedImage source,double ratio) { int w = (int) (source.getWidth() * ratio); int h = (int) (source.getHeight() * ratio); BufferedImage bi = getCompatibleImage(w, h); Graphics2D g2d = bi.createGraphics(); double xScale = (double) w / source.getWidth(); double yScale = (double) h / source.getHeight(); AffineTransform at = AffineTransform.getScaleInstance(xScale,yScale); g2d.drawRenderedImage(source, at); g2d.dispose(); return bi; } private BufferedImage getCompatibleImage(int w, int h) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); GraphicsConfiguration gc = gd.getDefaultConfiguration(); BufferedImage image = gc.createCompatibleImage(w, h); return image; } 然后打电话: BufferedImage scaled = scale(img,0.5); 其中 0.5 是缩放比例,img 是包含正常大小图像的 BufferedImage。 原文由 Savvas Dalkitsis 发布,翻译遵循 CC BY-SA 2.5 许可协议
这将创建一个 100x100 像素的缩略图作为图像对象。如果您想将其写回磁盘,只需将代码转换为:
此外,如果您担心速度问题(如果您想缩放许多图像,上述方法相当慢),请使用这些方法和以下声明:
然后打电话:
其中 0.5 是缩放比例,img 是包含正常大小图像的 BufferedImage。