Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java压缩图片到指定大小

作者:冰残°零度伤   发布日期:2025-08-25   浏览:40

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
    }
}

解释说明:

  1. 导入必要的包:我们导入了处理图像所需的类,包括BufferedImageImageIOJPEGCodec等。
  2. 读取原始图片:使用ImageIO.read()方法读取输入图片文件。
  3. 设置初始质量:开始时设置图片质量为最高(1.0)。
  4. 循环压缩:通过循环调整图片质量,直到文件大小达到或低于目标大小,或者质量降到最低(0.1)。
  5. 保存压缩后的图片:使用JPEGCodec.createJPEGEncoder()方法将压缩后的图片保存到指定路径。
  6. 检查文件大小:在每次压缩后检查文件大小,如果超过目标大小则继续降低质量重新压缩。
  7. 示例调用:在main方法中调用compressImage方法,将图片压缩到指定大小。

注意:此代码使用了com.sun.image.codec.jpeg包,该包在较新的Java版本中已被弃用。建议使用第三方库如ThumbnailatorImgscalr来替代。

上一篇:java 获取ip地址

下一篇:append java

大家都在看

java连接数据库的代码

java djl

ubuntu 卸载java

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

java发送qq邮件

java 判断

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站