import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageCompressor {
public static void compressImage(String inputImagePath, String outputImagePath, int targetSizeInKB) {
try {
// 读取原始图片
File inputFile = new File(inputImagePath);
BufferedImage originalImage = ImageIO.read(inputFile);
// 设置初始质量为1.0(最高质量)
float quality = 1.0f;
File compressedFile = null;
do {
// 创建输出文件
compressedFile = new File(outputImagePath);
// 使用JPEG编码器压缩图片并设置质量
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(ImageIO.createImageOutputStream(compressedFile));
JPEGCodec.setQuality(encoder, quality, true);
encoder.encode(originalImage);
// 检查文件大小是否达到目标大小
if (compressedFile.length() / 1024 <= targetSizeInKB || quality <= 0.1) {
break;
} else {
// 如果文件大小超过目标大小,降低质量重新尝试
quality -= 0.1;
}
} while (quality > 0.1);
System.out.println("图片已成功压缩到: " + compressedFile.getAbsolutePath());
} catch (IOException e) {
System.out.println("压缩图片时出错: " + e.getMessage());
}
}
public static void main(String[] args) {
// 示例调用
compressImage("input.jpg", "output.jpg", 100); // 将图片压缩到100KB
}
}
BufferedImage
、ImageIO
和JPEGCodec
等。ImageIO.read()
方法读取输入图片文件。JPEGCodec.createJPEGEncoder()
方法将压缩后的图片保存到指定路径。main
方法中调用compressImage
方法,将图片压缩到指定大小。注意:此代码使用了com.sun.image.codec.jpeg
包,该包在较新的Java版本中已被弃用。建议使用第三方库如Thumbnailator
或Imgscalr
来替代。
上一篇:java 获取ip地址
下一篇:append java
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站