import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.RenderingHints;
public class ImageCompressor {
public static void compressImage(String inputImagePath, String outputImagePath, int targetWidth, int targetHeight) {
try {
// 读取原始图片
File inputFile = new File(inputImagePath);
BufferedImage originalImage = ImageIO.read(inputFile);
// 创建一个新的BufferedImage对象,用于保存压缩后的图像
BufferedImage compressedImage = new BufferedImage(targetWidth, targetHeight, originalImage.getType());
// 获取Graphics2D对象,用于绘制压缩后的图像
Graphics2D g2d = compressedImage.createGraphics();
// 设置抗锯齿和高质量渲染提示
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// 绘制压缩后的图像
AffineTransform at = AffineTransform.getScaleInstance((double) targetWidth / originalImage.getWidth(), (double) targetHeight / originalImage.getHeight());
g2d.drawRenderedImage(originalImage, at);
// 释放Graphics2D资源
g2d.dispose();
// 将压缩后的图像写入文件
File outputFile = new File(outputImagePath);
ImageIO.write(compressedImage, "jpg", outputFile);
System.out.println("图片压缩完成!");
} catch (IOException e) {
System.out.println("图片压缩失败: " + e.getMessage());
}
}
public static void main(String[] args) {
// 示例调用
compressImage("input.jpg", "output.jpg", 800, 600);
}
}
导入必要的包:
java.awt.image.BufferedImage
:用于表示图像。java.io.File
和 javax.imageio.ImageIO
:用于读取和写入图像文件。java.awt.Graphics2D
和 java.awt.geom.AffineTransform
:用于绘制和变换图像。java.awt.RenderingHints
:用于设置图像渲染的质量提示。compressImage 方法:
ImageIO.read
读取原始图像。BufferedImage
对象,用于保存压缩后的图像。Graphics2D
对象绘制压缩后的图像,并设置高质量的渲染提示(如抗锯齿)。AffineTransform
进行缩放变换。main 方法:
compressImage
方法进行图片压缩。希望这段代码能帮助你实现图片压缩功能!
上一篇:java boolean
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站