欢迎访问宙启技术站
智能推送

使用Java函数实现图像处理(如缩放、旋转、剪裁等)

发布时间:2023-10-27 14:42:14

在Java中实现图像处理可以使用Java的图像处理库javax.imageio和java.awt.image。以下是一个使用Java实现缩放、旋转和剪裁图像的示例代码:

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

public class ImageProcessing {

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

        try {
            // 读取输入图像
            BufferedImage inputImage = ImageIO.read(new File(inputImagePath));

            // 缩放图像
            BufferedImage scaledImage = scaleImage(inputImage, 0.5);

            // 旋转图像
            BufferedImage rotatedImage = rotateImage(scaledImage, 45);

            // 剪裁图像
            BufferedImage croppedImage = cropImage(rotatedImage, 100, 100, 200, 200);

            // 写入输出图像
            ImageIO.write(croppedImage, "jpg", new File(outputImagePath));

            System.out.println("图像处理完成。");
        } catch (IOException e) {
            System.out.println("图像处理错误:" + e.getMessage());
        }
    }

    // 缩放图像
    private static BufferedImage scaleImage(BufferedImage inputImage, double scaleFactor) {
        int scaledWidth = (int) (inputImage.getWidth() * scaleFactor);
        int scaledHeight = (int) (inputImage.getHeight() * scaleFactor);

        BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, inputImage.getType());

        Graphics2D graphics2D = outputImage.createGraphics();
        graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        graphics2D.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
        graphics2D.dispose();

        return outputImage;
    }

    // 旋转图像
    private static BufferedImage rotateImage(BufferedImage inputImage, double degrees) {
        BufferedImage outputImage = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), inputImage.getType());

        Graphics2D graphics2D = outputImage.createGraphics();
        graphics2D.rotate(Math.toRadians(degrees), inputImage.getWidth() / 2, inputImage.getHeight() / 2);
        graphics2D.drawImage(inputImage, 0, 0, null);
        graphics2D.dispose();

        return outputImage;
    }

    // 剪裁图像
    private static BufferedImage cropImage(BufferedImage inputImage, int x, int y, int width, int height) {
        return inputImage.getSubimage(x, y, width, height);
    }
}

以上代码中,示例默认将输入图像缩放为原尺寸的50%,旋转45度,并剪裁出中心200x200的区域作为输出图像。你可以根据自己的需求调整参数来实现不同的图像处理操作。