Java实现图片无损压缩
时间: 2023-08-29 14:09:01 浏览: 69
在Java中,可以使用ImageIO类来实现图片的无损压缩。下面是一个简单的示例代码:
```java
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageCompression {
public static void main(String[] args) {
String inputImagePath = "input.jpg"; // 输入图片路径
String outputImagePath = "output.jpg"; // 输出压缩后的图片路径
int newWidth = 800; // 压缩后的宽度
int newHeight = 600; // 压缩后的高度
try {
// 读取输入图片
BufferedImage inputImage = ImageIO.read(new File(inputImagePath));
// 创建一个新的缩放后的图片
BufferedImage outputImage = new BufferedImage(newWidth, newHeight, inputImage.getType());
// 获取Graphics2D对象,用于绘制缩放后的图片
Graphics2D graphics2D = outputImage.createGraphics();
// 设置绘制时的抗锯齿和平滑度选项
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
graphics2D.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 执行绘制操作,将输入图片绘制到缩放后的图片上
graphics2D.drawImage(inputImage, 0, 0, newWidth, newHeight, null);
graphics2D.dispose();
// 将缩放后的图片输出到指定路径
ImageIO.write(outputImage, "jpg", new File(outputImagePath));
System.out.println("图片压缩完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码中,通过指定输入图片路径、输出压缩后的图片路径、压缩后的宽度和高度来实现图片的无损压缩。可以根据实际需求进行相应的修改。