[java] Jansi를 이용하여 자바 애플리케이션에서 터미널에서 이미지 변환하기

이 문서에서는 Jansi를 사용하여 자바 애플리케이션에서 터미널에서 이미지를 변환하는 방법에 대해 알아보겠습니다. Jansi는 ANSI 이스케이프 시퀀스를 처리하는 자바 라이브러리로, 콘솔에 색상 및 스타일을 추가하는 기능을 제공합니다.

Jansi 라이브러리 추가하기

Maven을 사용한다면, pom.xml 파일에 다음 의존성을 추가해주세요:

<dependencies>
    <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>1.18</version>
    </dependency>
</dependencies>

Gradle을 사용한다면, build.gradle 파일에 다음 의존성을 추가해주세요:

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

이미지 변환 코드 작성하기

다음은 Jansi를 사용하여 터미널에서 이미지를 변환하는 예제 코드입니다:

import org.fusesource.jansi.AnsiConsole;
import org.fusesource.jansi.Ansi;

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

public class ImageConverter {

    public static void main(String[] args) {
        AnsiConsole.systemInstall();

        try {
            BufferedImage image = ImageIO.read(new File("path/to/image.jpg"));
            int width = image.getWidth();
            int height = image.getHeight();

            for (int y = 0; y < height; y++) {
                StringBuilder line = new StringBuilder();

                for (int x = 0; x < width; x++) {
                    Color color = new Color(image.getRGB(x, y));
                    Ansi.Color ansiColor = convertColorToAnsi(color);
                    line.append(ansiColor).append(" ").append(Ansi.Color.DEFAULT);
                }

                System.out.println(line.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        AnsiConsole.systemUninstall();
    }

    private static Ansi.Color convertColorToAnsi(Color color) {
        int red = color.getRed();
        int green = color.getGreen();
        int blue = color.getBlue();

        if (red > green && red > blue) {
            return Ansi.Color.RED;
        } else if (green > red && green > blue) {
            return Ansi.Color.GREEN;
        } else if (blue > red && blue > green) {
            return Ansi.Color.BLUE;
        } else {
            return Ansi.Color.DEFAULT;
        }
    }
}

위 코드에서 path/to/image.jpg 부분을 변환하고자 하는 이미지 파일의 경로로 변경해주세요.

실행 결과 확인하기

위 코드를 실행하면, 터미널에 이미지의 픽셀을 해당하는 ANSI 컬러로 변환하여 출력합니다. 이미지의 각 픽셀은 공백(``)과 컬러로 표시됩니다. 예를 들어, 빨간색 픽셀은 빨간색으로 출력되고, 초록색 픽셀은 초록색으로 출력됩니다.

이제 자바 애플리케이션에서 터미널에서 이미지를 변환하는 방법을 알게 되었습니다. Jansi를 사용하면 콘솔에 색상을 추가하여 보다 흥미로운 출력을 만들 수 있습니다.

참고 자료