[java] Java Image I/O와 이미지 처리

Java에서 이미지를 읽고 쓰기, 그리고 처리하는 데는 Java Image I/O API를 사용할 수 있습니다. Java Image I/O는 다양한 이미지 포맷을 지원하며, 이미지를 읽고 쓰는 데 필요한 클래스와 메서드를 제공합니다. 또한 Java에서는 이미지를 처리하기 위한 다양한 기능을 제공하므로, 본 블로그에서는 Java Image I/O를 통해 이미지를 읽고 쓰는 방법과 이미지 처리 기능을 소개하겠습니다.

이미지 읽기와 쓰기

Java Image I/O를 사용하여 이미지를 읽고 쓰려면 ImageIO 클래스를 이용합니다. 아래는 이미지를 읽는 예제코드입니다.

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

public class ImageReader {
    public static void main(String[] args) {
        try {
            File file = new File("image.jpg");
            BufferedImage image = ImageIO.read(file);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이미지를 쓰는 방법은 이미지를 읽는 방법과 유사합니다. 이미지를 수정한 후 ImageIO.write 메서드를 사용하여 쓸 수 있습니다.

이미지 처리

Java에서는 이미지를 처리하기 위한 다양한 기능을 제공합니다. 이미지를 변경하거나 필터링하는 데에는 BufferedImage 클래스와 Graphics2D 클래스를 활용할 수 있습니다. 예를 들어, 이미지를 회전시키거나 크기를 조절하는 등의 작업을 할 수 있습니다.

아래는 이미지를 회전하는 예제코드입니다.

public class ImageProcessor {
    public static void main(String[] args) {
        try {
            File file = new File("image.jpg");
            BufferedImage image = ImageIO.read(file);

            // 이미지를 90도 회전
            AffineTransform tx = AffineTransform.getQuadrantRotateInstance(1, image.getWidth() / 2.0, image.getHeight() / 2.0);
            AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
            BufferedImage rotatedImage = op.filter(image, null);

            ImageIO.write(rotatedImage, "jpg", new File("rotated_image.jpg"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

위 예제는 이미지를 읽고 90도 회전시킨 후 새로운 파일에 쓰는 방법을 보여줍니다.

Java Image I/O를 통해 이미지를 읽고 쓰는 방법과 이미지 처리 기능을 활용하여 다양한 이미지 처리 작업을 수행할 수 있습니다. Java의 이미지 처리 기능은 빠르고 유연하며 다양한 이미지 포맷을 지원하므로, 다양한 이미지 처리 작업에 활용할 수 있습니다.

이상으로 Java Image I/O와 이미지 처리에 관한 내용을 소개하였습니다.

참고문헌: