当前位置:首页 > Java

java如何压缩照片

2026-03-24 15:04:10Java

Java 压缩照片的方法

使用 Java 内置的 ImageIO 和 BufferedImage

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

java如何压缩照片

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 库,支持缩放和质量调整。

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 压缩质量。

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如何使用

Java 基本使用方法 Java 是一种广泛使用的编程语言,适用于开发各种类型的应用程序。以下是 Java 的基本使用方法,包括环境配置、语法基础和常用操作。 安装 Java 开发环境 下载并安装…

如何打开java

如何打开java

打开 Java 程序的方法 通过命令行运行 Java 程序 确保已安装 Java Development Kit (JDK) 并配置环境变量。使用 javac 编译 .java 文件,生成 .clas…

如何配置java

如何配置java

安装Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK安装包。选择与系统架构匹配的版本(如Windows x64、macOS ARM等)。运行安装程…

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…