[java] Jansi를 활용하여 자바에서 터미널에서 이미지 크롭하기
프로그램에서 이미지를 처리하고 편집하는 작업은 매우 일반적입니다. 자바에서 이미지를 터미널에서 크롭하는 작업은 Jansi 라이브러리를 사용하여 간단하게 할 수 있습니다. Jansi는 터미널에서 ANSI 이스케이프 코드를 사용하여 색상, 스타일 등을 처리하는 라이브러리입니다.
아래는 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 TerminalImageCropExample {
public static void main(String[] args) throws IOException {
// 이미지 파일 경로 설정
String imagePath = "path/to/image.png";
// 이미지 파일 로드
BufferedImage image = ImageIO.read(new File(imagePath));
// 이미지 크롭할 영역 설정
int cropX = 100;
int cropY = 100;
int cropWidth = 200;
int cropHeight = 200;
// 크롭된 이미지 생성
BufferedImage croppedImage = image.getSubimage(cropX, cropY, cropWidth, cropHeight);
// 터미널에 이미지 출력
AnsiConsole.systemInstall();
System.out.print(Ansi.ansi().eraseScreen());
for (int y = 0; y < croppedImage.getHeight(); y++) {
for (int x = 0; x < croppedImage.getWidth(); x++) {
Color color = new Color(croppedImage.getRGB(x, y));
Ansi.Color ansiColor = Ansi.Color.rgb(color.getRed(), color.getGreen(), color.getBlue());
System.out.print(Ansi.ansi().fg(ansiColor).a(" ").reset());
}
System.out.println();
}
AnsiConsole.systemUninstall();
}
}
위 예제 코드에서는 path/to/image.png
경로에 있는 이미지를 로드하고, cropX
, cropY
, cropWidth
, cropHeight
변수를 사용하여 크롭할 영역을 설정합니다. 그 후, image.getSubimage(cropX, cropY, cropWidth, cropHeight)
메서드를 사용하여 크롭된 이미지를 생성합니다.
마지막으로, AnsiConsole.systemInstall()
과 AnsiConsole.systemUninstall()
를 호출하여 ANSI 이스케이프 코드를 사용할 수 있게 설정하고, Ansi.ansi().fg(ansiColor).a(" ").reset()
를 사용하여 각 픽셀의 색상을 터미널에 출력합니다.
Jansi 라이브러리를 사용하면 자바에서 터미널에서 이미지를 처리하는 작업을 간단하게 할 수 있습니다. 이를 활용하여 이미지를 크롭하고 터미널에 출력하는 예제를 살펴보았습니다.
참고 링크: