Java批量调整图片大小

在日常开发过程中,经常会遇到需要批量调整图片大小的需求。无论是为了适应不同的设备或网页布局,还是为了减小图片文件的大小以提升加载速度,都需要对图片进行调整。本文将介绍如何使用Java来实现批量调整图片大小的功能。

图片调整的原理

调整图片大小的原理是通过改变图片的像素尺寸来实现。一般来说,调整图片的大小可以分为两种情况:按比例缩放和按指定尺寸缩放。

  • 按比例缩放:保持图片宽高比例不变,根据指定的比例缩放图片。
  • 按指定尺寸缩放:按照指定的宽度和高度来缩放图片。

Java实现图片调整

Java提供了一个强大的图像处理库——Java 2D,可以用于处理图片的各种操作,包括调整大小。下面是一个使用Java 2D来实现图片调整的示例代码:

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

public class ImageResizer {
    public static void resize(String inputImagePath, String outputImagePath, int scaledWidth, int scaledHeight)
            throws IOException {
        // 读取图片
        File inputFile = new File(inputImagePath);
        BufferedImage inputImage = ImageIO.read(inputFile);

        // 创建缩放后的图片
        Image resizedImage = inputImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
        BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);

        // 将缩放后的图片绘制到输出图像上
        Graphics2D g2d = outputImage.createGraphics();
        g2d.drawImage(resizedImage, 0, 0, null);
        g2d.dispose();

        // 输出图像到文件
        String formatName = outputImagePath.substring(outputImagePath.lastIndexOf(".") + 1);
        ImageIO.write(outputImage, formatName, new File(outputImagePath));
    }

    public static void main(String[] args) {
        try {
            String inputImagePath = "input.jpg";
            String outputImagePath = "output.jpg";
            int scaledWidth = 200;
            int scaledHeight = 200;

            resize(inputImagePath, outputImagePath, scaledWidth, scaledHeight);
        } catch (IOException ex) {
            System.out.println("Error resizing the image.");
            ex.printStackTrace();
        }
    }
}

在上述示例代码中,resize方法接收输入图片路径、输出图片路径、目标宽度和目标高度作为参数,通过读取输入图片,创建缩放后的图片,并将其绘制到输出图像上,最后将输出图像保存到文件中。main方法中演示了如何调用resize方法来实现批量调整图片大小的功能。

使用示例

假设有一批旅行照片需要调整尺寸以适应网页布局。我们可以使用上述代码将这些照片批量调整为200x200的缩略图。

journey
    title Java批量调整图片大小

    section 选择图片
    inputImage1(选择图片)
    inputImage2(选择图片)

    section 调整大小
    outputImage1(调整大小)
    outputImage2(调整大小)

    section 完成
    outputImage1 --> |保存到文件| file1(文件)
    outputImage2 --> |保存到文件| file2(文件)
sequenceDiagram
    participant 用户
    participant Java程序
    participant 图像处理库

    用户->>Java程序: 选择图片
    Java程序->>图像处理库: 读取图片
    图像处理库->>Java程序: 返回图片
    Java程序->>图像处理库: 创建缩放后的图片
    图像处理库->>Java程序: 返回缩放后的图片
    Java程序->>图像处理库: 将缩放后的图片绘制到输出图像上
    图像处理库->>Java程序: 返回输出图像
    Java程序->>图像处理库: 输出图像到文件
    图像处理库->>Java程序: 成功保存文件
    Java程序->>用户: 完成