java 图片压缩
时间: 2023-09-10 14:15:12 浏览: 194
Java 中可以使用 ImageIO 类和 BufferedImage 类来进行图片压缩操作。以下是一个简单的示例代码:
```java
import java.awt.Dimension;
import java.awt.Image;
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");
BufferedImage inputImage = ImageIO.read(inputFile);
int maxWidth = 800;
int maxHeight = 600;
Dimension newDimension = getScaledDimension(new Dimension(inputImage.getWidth(), inputImage.getHeight()), new Dimension(maxWidth, maxHeight));
BufferedImage outputImage = new BufferedImage(newDimension.width, newDimension.height, BufferedImage.TYPE_INT_RGB);
outputImage.getGraphics().drawImage(inputImage.getScaledInstance(newDimension.width, newDimension.height, Image.SCALE_SMOOTH), 0, 0, null);
File outputFile = new File("output.jpg");
ImageIO.write(outputImage, "jpg", outputFile);
}
public static Dimension getScaledDimension(Dimension imageSize, Dimension boundary) {
int width = imageSize.width;
int height = imageSize.height;
int maxWidth = boundary.width;
int maxHeight = boundary.height;
double ratio = Math.min((double) maxWidth / width, (double) maxHeight / height);
return new Dimension((int) (width * ratio), (int) (height * ratio));
}
}
```
上述代码中,首先读取一张图片(假设为 input.jpg),然后指定最大宽度和最大高度进行压缩。使用 `getScaledDimension` 方法计算新的宽度和高度,然后创建一个新的 `BufferedImage` 对象并将原始图片缩放到新的尺寸,最后将新的图片保存到文件中(假设为 output.jpg)。
需要注意的是,这里使用的是 `Image.SCALE_SMOOTH` 参数,表示使用平滑缩放算法,可以得到更好的压缩效果。
阅读全文