Java实现对图像文件的压缩
时间: 2023-10-13 21:06:46 浏览: 64
Java中可以使用ImageIO类来读取和写入图像文件,同时也支持对图像进行压缩。
以下是一段Java实现对图像文件压缩的示例代码:
```java
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class ImageCompressor {
public static void main(String[] args) {
String inputFileName = "input.jpg";
String outputFileName = "output.jpg";
int compressionQuality = 0.5; // 压缩质量,范围从0到1
try {
// 读取输入文件
BufferedImage inputImage = ImageIO.read(new File(inputFileName));
// 创建输出文件
File outputFile = new File(outputFileName);
// 写入输出文件
ImageIO.write(inputImage, "jpg", outputFile);
// 压缩输出文件
ImageIO.write(inputImage, "jpg", outputFile);
// 设置压缩质量
ImageWriteParam writeParam = ImageIO.getImageWritersByFormatName("jpg").next().getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(compressionQuality);
// 写入压缩后的图像
ImageOutputStream outputStream = ImageIO.createImageOutputStream(outputFile);
ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
writer.setOutput(outputStream);
writer.write(null, new IIOImage(inputImage, null, null), writeParam);
// 关闭输出流和写入器
outputStream.close();
writer.dispose();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例代码中,我们首先使用`ImageIO.read`方法读取输入文件,然后使用`ImageIO.write`方法将其写入输出文件。接下来,我们使用`ImageIO.getImageWritersByFormatName`方法获取JPEG格式的图像写入器,并使用`ImageWriteParam`类设置压缩质量。最后,我们使用`ImageIO.createImageOutputStream`方法创建输出流,并使用`ImageWriter.write`方法将压缩后的图像写入输出流,最终关闭输出流和写入器。
阅读全文