当前位置:首页 > Java

java如何压缩照片

2026-03-24 15:04:10Java

Java 压缩照片的方法

使用 Java 内置的 ImageIO 和 BufferedImage

通过 ImageIO 读取图片,使用 BufferedImage 调整尺寸和质量,再重新写入文件。

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class ImageCompressor {
    public static void compressImage(String inputPath, String outputPath, float quality) throws IOException {
        File inputFile = new File(inputPath);
        BufferedImage inputImage = ImageIO.read(inputFile);

        int scaledWidth = (int) (inputImage.getWidth() * 0.5);
        int scaledHeight = (int) (inputImage.getHeight() * 0.5);

        BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = outputImage.createGraphics();
        g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
        g2d.dispose();

        ImageIO.write(outputImage, "jpg", new File(outputPath));
    }
}

使用第三方库 Thumbnailator

Thumbnailator 是一个简化图片处理的 Java 库,支持缩放和质量调整。

import net.coobird.thumbnailator.Thumbnails;

public class ThumbnailatorExample {
    public static void compressImage(String inputPath, String outputPath) throws IOException {
        Thumbnails.of(inputPath)
            .scale(0.5) // 缩放比例
            .outputQuality(0.8) // 输出质量(0.0-1.0)
            .toFile(outputPath);
    }
}

使用 Java 高级图像处理库 imgscalr

imgscalr 提供更简单的 API 进行图片缩放和压缩。

import org.imgscalr.Scalr;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class ImgscalrExample {
    public static void compressImage(String inputPath, String outputPath) throws IOException {
        BufferedImage originalImage = ImageIO.read(new File(inputPath));
        BufferedImage scaledImage = Scalr.resize(originalImage, Scalr.Method.QUALITY, Scalr.Mode.AUTOMATIC, 800, 600);
        ImageIO.write(scaledImage, "jpg", new File(outputPath));
    }
}

使用 Java 的 JPEG 编码参数调整质量

通过 ImageWriteParam 设置 JPEG 压缩质量。

java如何压缩照片

import javax.imageio.*;
import javax.imageio.stream.*;
import java.awt.image.*;
import java.io.*;
import java.util.Iterator;

public class JPEGQualityExample {
    public static void compressImage(String inputPath, String outputPath, float quality) throws IOException {
        BufferedImage image = ImageIO.read(new File(inputPath));
        Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
        ImageWriter writer = writers.next();

        ImageWriteParam param = writer.getDefaultWriteParam();
        param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        param.setCompressionQuality(quality);

        FileOutputStream out = new FileOutputStream(outputPath);
        ImageOutputStream ios = ImageIO.createImageOutputStream(out);
        writer.setOutput(ios);
        writer.write(null, new IIOImage(image, null, null), param);

        ios.close();
        out.close();
        writer.dispose();
    }
}

注意事项

  • 压缩比例和质量参数(0.0-1.0)需要根据实际需求调整。
  • 第三方库如 Thumbnailator 和 imgscalr 需通过 Maven 或 Gradle 引入依赖。
  • 大尺寸图片处理时需注意内存占用,建议分批处理或使用流式操作。

标签: 照片java
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何输出

java如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…