java 压缩图片工具类
时间: 2024-08-14 16:02:57 浏览: 102
在Java中,压缩图片通常使用第三方库如Apache Commons ImageIO、Java Advanced Imaging (JAI) 或者更现代的库,比如FastBitmap或OpenCV。这些库提供了方便的方法来调整图片尺寸、质量和编码格式,从而实现压缩。
以下是一个简单的例子,使用`javax.imageio.ImageIO`来压缩JPEG格式的图片:
```java
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageCompressor {
public static void compressImage(String sourcePath, String targetPath, int maxWidth, int maxHeight) {
try {
BufferedImage original = ImageIO.read(new File(sourcePath));
// 创建一个新的BufferedImage对象用于保存压缩后的图像
BufferedImage resized = new BufferedImage(maxWidth, maxHeight, BufferedImage.TYPE_INT_RGB);
// 获取原始图像的宽度和高度
int width = original.getWidth();
int height = original.getHeight();
// 按比例缩放图像
double scaleWidth = ((double) maxWidth) / width;
double scaleHeight = ((double) maxHeight) / height;
double scaleFactor = Math.min(scaleWidth, scaleHeight);
int newWidth = (int) (width * scaleFactor);
int newHeight = (int) (height * scaleFactor);
// 缩放并绘制到新的BufferedImage上
Graphics2D g = resized.createGraphics();
g.drawImage(original.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH), 0, 0, null);
g.dispose();
// 将压缩后的图像保存为JPEG格式
ImageIO.write(resized, "jpg", new File(targetPath));
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个方法读取源文件,创建一个新的BufferedImage对象,然后根据给定的最大宽度和高度进行缩放。最后,将压缩后的图像保存为目标路径。
阅读全文