java imageio压缩图片
时间: 2023-08-31 13:05:45 浏览: 151
Java ImageIO提供了压缩图片的功能,可以将高分辨率的图片压缩成低分辨率的图片以减少图片的大小。以下是一个示例代码,演示如何使用ImageIO压缩图片:
```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) throws IOException {
File inputFile = new File("input.jpg");
File outputFile = new File("output.jpg");
BufferedImage inputImage = ImageIO.read(inputFile);
// 压缩比例
float compressionRatio = 0.5f;
// 计算压缩后的尺寸
int newWidth = (int) (inputImage.getWidth() * compressionRatio);
int newHeight = (int) (inputImage.getHeight() * compressionRatio);
// 创建压缩后的图片
BufferedImage outputImage = new BufferedImage(newWidth, newHeight, inputImage.getType());
// 绘制压缩后的图片
outputImage.createGraphics().drawImage(
inputImage.getScaledInstance(newWidth, newHeight, java.awt.Image.SCALE_SMOOTH),
0, 0, null
);
// 写入文件
ImageIO.write(outputImage, "jpg", outputFile);
}
}
```
在上面的代码中,我们首先读取一个输入图片文件,并指定一个输出图片文件。然后我们计算压缩比例,根据压缩比例计算出新的图片尺寸。接着我们创建一个新的BufferedImage对象,指定新的尺寸和图片类型。最后我们使用`createGraphics()`方法获取到一个Graphics2D对象,并使用`drawImage()`方法将原始图片缩放到新的尺寸上,并绘制到新的BufferedImage对象上。最后我们使用`ImageIO.write()`方法将新的BufferedImage对象写入到输出文件中。
阅读全文