Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java 压缩图片


在 Java 中,你可以使用不同的方式来压缩图片。下面我会介绍三种常用的方式,并提供相应的代码示例和所需的第三方库依赖。

方式一:使用 Java 原生库 ImageIO

步骤流程:

  1. 导入所需的包: import java.io.File;import javax.imageio.ImageIO;
  2. 使用 ImageIO.read() 方法读取原始图片。
  3. 创建一个 BufferedImage 来保存压缩后的图片。
  4. 获取 ImageIO.write() 方法的参数之一 ImageWriteParam 对象,设置压缩参数,如压缩质量。
  5. 调用 ImageIO.write() 方法将压缩后的图片保存到文件。

示例代码:

import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;

public class ImageCompressionExample {

    public static void main(String[] args) throws IOException {
        File inputFile = new File("input.jpg");
        File outputFile = new File("output_compressed.jpg");

        BufferedImage originalImage = ImageIO.read(inputFile);
        BufferedImage compressedImage = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB);

        ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();
        ImageWriteParam params = writer.getDefaultWriteParam();
        params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
        params.setCompressionQuality(0.5f); // Adjust the quality (0.0 to 1.0)

        FileImageOutputStream output = new FileImageOutputStream(outputFile);
        writer.setOutput(output);
        writer.write(null, new javax.imageio.IIOImage(compressedImage, null, null), params);
        output.close();
    }
}

依赖坐标(Maven):

<dependency>
    <groupId>javax.imageio</groupId>
    <artifactId>javax.imageio-api</artifactId>
    <version>1.0.1</version>
</dependency>

方式二:使用第三方库 Thumbnails

步骤流程:

  1. 导入所需的包: import net.coobird.thumbnailator.Thumbnails;
  2. 使用 Thumbnails.of() 方法创建一个 Thumbnails.Builder 对象。
  3. 调用链式方法设置压缩参数,如大小、质量等。
  4. 调用 toFile() 方法将压缩后的图片保存到文件。

示例代码:

import java.io.File;
import java.io.IOException;
import net.coobird.thumbnailator.Thumbnails;

public class ImageCompressionExample {

    public static void main(String[] args) throws IOException {
        File inputFile = new File("input.jpg");
        File outputFile = new File("output_compressed.jpg");

        Thumbnails.of(inputFile)
                .size(800, 600) // Set the dimensions
                .outputQuality(0.5) // Set the quality (0.0 to 1.0)
                .toFile(outputFile);
    }
}

依赖坐标(Maven):

<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.14</version>
</dependency>

依赖坐标(Gradle):

implementation 'net.coobird:thumbnailator:0.4.14'

方式三:使用第三方库 imgscalr

步骤流程:

  1. 导入所需的包: import org.imgscalr.Scalr;
  2. 使用 Scalr.resize() 方法来调整图片尺寸并压缩。
  3. 使用 ImageIO.write() 方法将压缩后的图片保存到文件。

示例代码:

import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.imgscalr.Scalr;

public class ImageCompressionExample {

    public static void main(String[] args) throws IOException {
        File inputFile = new File("input.jpg");
        File outputFile = new File("output_compressed.jpg");

        BufferedImage originalImage = ImageIO.read(inputFile);
        BufferedImage resizedImage = Scalr.resize(originalImage, Scalr.Method.QUALITY, Scalr.Mode.AUTOMATIC, 800, 600);

        ImageIO.write(resizedImage, "jpg", outputFile);
    }
}

依赖坐标(Maven):

<dependency>
    <groupId>org.imgscalr</groupId>
    <artifactId>imgscalr-lib</artifactId>
    <version>4.2</version>
</dependency>

依赖坐标(Gradle):

implementation 'org.imgscalr:imgscalr-lib:4.2'

以上三种方式都是常见的压缩图片的方法,你可以根据你的需求和偏好选择其中一种。在集成这些库时,请根据你的构建工具选择相应的依赖坐标。

在Java中压缩字符串有多种实现方式,其中常用的方式包括使用GZIP压缩和使用Deflater压缩。以上就是使用GZIP和Deflater两 ...
下面将介绍两种常用的方式:使用Java标准库和使用第三方库ImageIO,以及使用第三方库Thumbnails。示例代码:###使用第三方库 ...
示例代码:###方法二:使用ApacheCommonsCompress库步骤流程:1.创建一个ArchiveOutputStream对象(Z ...
下面我将介绍两种常用的实现方式:使用Java内置的ZipOutputStream和使用第三方库ApacheCommonsCompress。# ...
下面我将介绍两种常用的实现方式:使用GZIP压缩和使用Deflate压缩。以下是实现的步骤:导入必要的库:在你的Maven项目中,需要在`p ...