/** * @param src * 源图片文件路径 * @param dist * 生成图片文件路径 * @param width * 压缩的宽度 * @param height * 压缩的高度 */ public static void createThumbnail(String src, String dist, float width, float height) { try { File srcfile = new File(src); if (!srcfile.exists()) { System.out.println("文件不存在"); return; } BufferedImage image = ImageIO.read(srcfile); // 压缩清晰度的比例 double ratio = 2.5; // 判断如果高、宽都不大于设定值,则不处理 if (image.getHeight() > height || image.getWidth() > width) { if (image.getHeight() > image.getWidth()) { ratio = height / image.getHeight(); } else { ratio = width / image.getWidth(); } } // 计算新的图面宽度和高度 int newWidth = (int) (image.getWidth() * ratio); int newHeight = (int) (image.getHeight() * ratio); BufferedImage bfImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); bfImage.getGraphics().drawImage( image.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null); FileOutputStream os = new FileOutputStream(dist); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os); encoder.encode(bfImage); os.close(); System.out.println("压缩图片创建成功"); } catch (Exception e) { System.out.println("压缩图片创建异常" + e.getMessage()); } } public static void main(String[] args) { String basePath = "E:\\"; createThumbnail(basePath+"tupian.jpg", basePath+"a.jpg", 2560, 1600); //createThumbnail(basePath+"tupian.png", basePath+"b.png", 2561, 1601); createThumbnail(basePath+"16145920901271609918640.jpg", basePath+"c.jpg", 4928, 2484); }