当前位置:首页 > Java

java如何压缩图片

2026-03-04 08:39:35Java

压缩图片的方法

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

使用Java内置的ImageIO类

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

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提供了更高级的图像处理功能,适合需要更复杂操作的场景。

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如何压缩图片

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

相关文章

css网页制作漂浮图片

css网页制作漂浮图片

使用CSS实现漂浮图片效果 通过CSS的animation属性和@keyframes规则可以轻松实现图片漂浮效果。以下是几种常见实现方式: 基础漂浮动画 通过关键帧定义图片的垂直移动,模拟漂浮感:…

css3手工制作图片

css3手工制作图片

使用CSS3手工制作图片 CSS3可以通过各种属性如box-shadow、border-radius、gradient等来手工绘制简单的图形或图片效果。以下是几种常见的方法: 绘制圆形 通过bor…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

如何运行java程序

如何运行java程序

编写Java代码 创建一个以.java为扩展名的文件,例如HelloWorld.java。文件内容需包含一个类定义,类名必须与文件名一致。例如: public class HelloWorld {…

如何学习java

如何学习java

学习Java的步骤 理解基础知识 从Java的基本语法开始,包括变量、数据类型、运算符、控制流(if-else、循环)等。掌握这些基础概念是后续学习的基石。 学习面向对象编程(OOP) Java是一…