需求:
Java实现对图片压缩指定大小。比如1260*945。如果图片尺寸大于,就压缩。小于,就拉伸到指定大小
代码实现:
import?java.awt.Graphics2D; import?java.awt.Image; import?java.awt.image.BufferedImage; import?java.io.File; import?java.io.IOException; import?javax.imageio.ImageIO; public?class?ImageProcessor?{ ????public?static?void?main(String[]?args)?{ ????????String?inputImagePath?=?"input.jpg";?//?输入图片路径 ????????String?outputImagePath?=?"output.jpg";?//?输出图片路径 ????????int?targetWidth?=?1260; ????????int?targetHeight?=?945; ????????try?{ ????????????BufferedImage?inputImage?=?ImageIO.read(new?File(inputImagePath)); ????????????//?获取原始图片的尺寸 ????????????int?originalWidth?=?inputImage.getWidth(); ????????????int?originalHeight?=?inputImage.getHeight(); ????????????//?创建一个新的?BufferedImage,用于存放处理后的图片 ????????????BufferedImage?outputImage?=?new?BufferedImage(targetWidth,?targetHeight,?inputImage.getType()); ????????????//?创建一个?Graphics2D?对象,用于绘制新图片 ????????????Graphics2D?graphics?=?outputImage.createGraphics(); ????????????//?如果原始图片尺寸大于目标尺寸,则进行压缩 ????????????if?(originalWidth?>?targetWidth?||?originalHeight?>?targetHeight)?{ ????????????????Image?scaledImage?=?inputImage.getScaledInstance(targetWidth,?targetHeight,?Image.SCALE_SMOOTH); ????????????????graphics.drawImage(scaledImage,?0,?0,?null); ????????????}?else?{ ????????????????//?如果原始图片尺寸小于目标尺寸,则进行拉伸 ????????????????graphics.drawImage(inputImage,?0,?0,?targetWidth,?targetHeight,?null); ????????????} ????????????//?释放资源 ????????????graphics.dispose(); ????????????//?保存处理后的图片 ????????????ImageIO.write(outputImage,?"jpg",?new?File(outputImagePath)); ????????????System.out.println("图片处理完成。"); ????????}?catch?(IOException?e)?{ ????????????e.printStackTrace(); ????????} ????} }