Java 图片压缩
时间: 2023-07-22 14:03:54 浏览: 45
在 Java 中,可以使用 ImageIO 和 BufferedImage 类来进行图片压缩。以下是一个简单的示例代码:
```java
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class ImageCompressor {
public static void main(String[] args) {
try {
File input = new File("input.jpg");
BufferedImage image = ImageIO.read(input);
File output = new File("output.jpg");
int newWidth = 200; // 设置新宽度
int newHeight = (int) Math.round(image.getHeight() * (newWidth / (double) image.getWidth())); // 根据比例计算新高度
BufferedImage resizedImage = new BufferedImage(newWidth, newHeight, image.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(image, 0, 0, newWidth, newHeight, null);
g.dispose();
String formatName = "jpg";
ImageIO.write(resizedImage, formatName, output);
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
```
在上面的代码中,我们首先读取原始图片,然后计算新的宽度和高度,接着创建一个新的缩放后的 BufferedImage 对象,利用 Graphics2D 类的 drawImage 方法将原始图片绘制到新的 BufferedImage 上,最后将新的 BufferedImage 写入到输出文件中。
需要注意的是,如果压缩的目标文件格式与原始文件格式不同,需要在 ImageIO.write 方法的第二个参数中指定目标文件格式,例如上面的示例中压缩后的文件格式为 jpg。