Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 미러 이미지(좌우 반전 이미지) 만드는 방법

이미지 처리에서 미러 이미지(mirror image)란 원본 이미지를 좌우로 뒤집은 결과물을 의미합니다. Java에서는 픽셀 단위로 이미지를 조작하여 손쉽게 미러 효과를 구현할 수 있습니다. 이 글에서는 BufferedImageImageIO 클래스를 활용해 미러 이미지를 만드는 과정을 단계별로 살펴보겠습니다.

미러 이미지 생성 절차

  • ImageIO.read() 메서드를 사용하여 원본 이미지를 읽어옵니다.

  • 이미지의 높이(height)와 너비(width)를 구합니다.

  • 결과를 저장할 빈 BufferedImage 객체를 생성합니다.

  • 중첩 for 루프를 사용하여 이미지의 모든 픽셀을 순회합니다.

  • 이미지의 너비를 오른쪽에서 왼쪽으로 반복하며 픽셀 위치를 교체합니다.

  • getRGB() 메서드로 원본 픽셀 값을 가져옵니다.

  • setRGB() 메서드를 사용해 새로운 너비 값에 해당하는 위치에 픽셀을 설정함으로써 결과 이미지 객체에 좌우 반전된 픽셀을 기록합니다.

예제 코드

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

public class MirrorImage {
    public static void main(String args[]) throws IOException {
        // 이미지 읽기
        File file = new File("D:\\Images\\tree.jpg");
        BufferedImage img = ImageIO.read(file);

        // 읽어온 이미지의 높이와 너비 구하기
        int height = img.getHeight();
        int width = img.getWidth();

        // 결과를 저장할 BufferedImage 생성
        BufferedImage res = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

        for (int j = 0; j < height; j++) {
            for (int i = 0, w = width - 1; i < width; i++, w--) {
                int p = img.getRGB(i, j);
                // 미러 이미지 픽셀 값 설정 - 좌우 모두 적용
                res.setRGB(w, j, p);
            }
        }

        // 수정된 이미지 저장
        file = new File("D:\\Images\\mirror_image.jpg");
        ImageIO.write(res, "jpg", file);
        System.out.println("Done...");
    }
}

입력 이미지

Java로 미러 이미지(좌우 반전 이미지) 만드는 방법

출력 이미지

Java로 미러 이미지(좌우 반전 이미지) 만드는 방법

핵심 포인트 정리

이 예제의 핵심은 내부 루프에서 두 개의 인덱스(i는 왼쪽→오른쪽, w는 오른쪽→왼쪽)를 동시에 이동시키면서 원본 픽셀을 반대편 위치에 복사하는 것입니다. 이렇게 하면 각 행(row)마다 좌우가 뒤집힌 미러 효과가 자연스럽게 완성됩니다. 처리가 끝난 후에는 ImageIO.write() 메서드로 결과 이미지를 JPG 파일로 저장하면 됩니다.