直接上代码:
package com.henu.test; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ImgTest { public static void createImgThumbnail(String imgSrc, int thumbWidth, int thumbHeight, String outFilePath) throws InterruptedException, IOException { File imageFile = new File(imgSrc); BufferedImage image = ImageIO.read(imageFile); Integer width = image.getWidth(); Integer height = image.getHeight(); double i = (double) width / (double) height; double j = (double) thumbWidth / (double) thumbHeight; int[] d = new int[2]; int x = 0; int y = 0; if (i > j) { d[1] = thumbHeight; d[0] = (int) (thumbHeight * i); y = 0; x = (d[0] - thumbWidth) / 2; } else { d[0] = thumbWidth; d[1] = (int) (thumbWidth / i); x = 0; y = (d[1] - thumbHeight) / 2; } File outFile = new File(outFilePath); if (!outFile.getParentFile().exists()) { outFile.getParentFile().mkdirs(); } /* 等比例缩放 */ BufferedImage newImage = new BufferedImage(d[0], d[1], image.getType()); Graphics g = newImage.getGraphics(); g.drawImage(image, 0, 0, d[0], d[1], null); g.dispose(); /* 居中剪裁 */ newImage = newImage.getSubimage(x, y, thumbWidth, thumbHeight); ImageIO.write( newImage, imageFile.getName().substring( imageFile.getName().lastIndexOf(".") + 1), outFile); } public static void main(String[] args) throws Exception { ImgTest.createImgThumbnail("D:/test/2.jpg", 510, 288, "D:/test/test_2.jpg"); } }