java等比例压缩图片
时间: 2023-10-17 20:18:05 浏览: 109
Java中可以使用ImageIO类和BufferedImage类实现图片的等比例压缩。具体步骤如下:
1. 读取原始图片,可以使用ImageIO类的静态方法read()。
2. 根据压缩比例计算压缩后的图片尺寸,例如可以使用如下公式:
int newWidth = (int)(originalWidth * scale);
int newHeight = (int)(originalHeight * scale);
3. 创建压缩后的图片BufferedImage对象,可以使用BufferedImage类的静态方法getScaledInstance()。
4. 将原始图片绘制到压缩后的图片中,可以使用Graphics2D类的drawImage()方法。
5. 将压缩后的图片保存到指定路径,可以使用ImageIO类的静态方法write()。
下面是一个示例代码:
```
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageCompressor {
public static void compress(File inputFile, File outputFile, double scale) throws Exception {
// 读取原始图片
BufferedImage originalImage = ImageIO.read(inputFile);
int originalWidth = originalImage.getWidth();
int originalHeight = originalImage.getHeight();
// 计算压缩后的图片尺寸
int newWidth = (int)(originalWidth * scale);
int newHeight = (int)(originalHeight * scale);
// 创建压缩后的图片BufferedImage对象
BufferedImage newImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = newImage.createGraphics();
graphics.drawImage(originalImage.getScaledInstance(newWidth, newHeight, java.awt.Image.SCALE_SMOOTH), 0, 0, null);
graphics.dispose();
// 将压缩后的图片保存到指定路径
ImageIO.write(newImage, "jpg", outputFile);
}
}
```
在上述代码中,compress()方法接收原始图片文件路径、压缩后图片文件路径和压缩比例作为参数,实现了图片的等比例压缩。
阅读全文