当前位置:首页 > Java

java如何压缩图片

2026-03-04 08:39:35Java

压缩图片的方法

使用Java压缩图片可以通过多种方式实现,以下是几种常见的方法:

使用Java内置的ImageIO类

Java的javax.imageio.ImageIO类提供了一种简单的方式来读取和写入图像文件,通过调整图像质量可以实现压缩效果。

java如何压缩图片

import javax.imageio.ImageIO;
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 {
        BufferedImage image = ImageIO.read(new File(inputPath));
        File outputFile = new File(outputPath);
        ImageIO.write(image, "jpg", outputFile);
    }
}

使用第三方库Thumbnailator

Thumbnailator是一个专门用于处理图片缩放的Java库,支持多种压缩和调整大小的操作。

import net.coobird.thumbnailator.Thumbnails;

public class ImageCompressor {
    public static void compressImage(String inputPath, String outputPath, float quality) throws IOException {
        Thumbnails.of(inputPath)
                .scale(1.0)
                .outputQuality(quality)
                .toFile(outputPath);
    }
}

使用Java Advanced Imaging (JAI)

JAI提供了更高级的图像处理功能,适合需要更复杂操作的场景。

java如何压缩图片

import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;

public class ImageCompressor {
    public static void compressImage(String inputPath, String outputPath, float quality) throws IOException {
        RenderedOp image = JAI.create("fileload", inputPath);
        ImageIO.write(image, "jpg", new File(outputPath));
    }
}

调整压缩质量

为了进一步控制压缩质量,可以使用ImageWriterImageWriteParam来设置压缩参数。

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

public class ImageCompressor {
    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);
        File outputFile = new File(outputPath);
        try (var outputStream = ImageIO.createImageOutputStream(outputFile)) {
            writer.setOutput(outputStream);
            writer.write(null, new IIOImage(image, null, null), param);
        }
        writer.dispose();
    }
}

使用Apache Commons Imaging

Apache Commons Imaging是另一个强大的图像处理库,支持多种图像格式。

import org.apache.commons.imaging.ImageFormats;
import org.apache.commons.imaging.Imaging;
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 {
        BufferedImage image = Imaging.getBufferedImage(new File(inputPath));
        Imaging.writeImage(image, new File(outputPath), ImageFormats.JPEG, null);
    }
}

总结

Java提供了多种方式来实现图片压缩,从内置的ImageIO到第三方库如Thumbnailator和Apache Commons Imaging。选择哪种方法取决于具体需求,如是否需要更精细的质量控制或更高的性能。

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

相关文章

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 使用 Canvas API 提取颜色 在 Vue 项目中,可以通过 Canvas API 实现图片取色功能。创建一个组件,利用 ref 获取图片元素并绘制到 Canvas 上…

java如何调用方法

java如何调用方法

调用方法的基本语法 在Java中,调用方法需要明确方法所属的对象(实例方法)或类(静态方法),并传递必要的参数。语法格式如下: 实例方法:对象名.方法名(参数列表); 静态方法:类名…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-model 管…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

jquery图片轮播

jquery图片轮播

jQuery图片轮播实现方法 基础HTML结构 创建一个简单的HTML结构,包含轮播容器、图片列表和导航按钮。 <div class="slider"> <div class=…

如何学好java编程

如何学好java编程

理解基础概念 掌握Java的基础语法是学习的起点。变量、数据类型、运算符、控制结构(如循环和条件语句)是核心内容。面向对象编程(OOP)的概念(类、对象、继承、多态、封装)是Java的核心,需深入理解…