개발_이야기

이미지를 콘솔화면으로 출력하는 프로그램

조규현15 2015. 12. 31. 11:31
반응형

가끔 주변에서 ASCII코드만 사용하여 그림을 출력하는 이미지를 볼 수 있다.

그것을 만들어보기로 했다.


일단, 콘솔화면(CUI)에서 그림을 출력해야 했다.

첫 번째 방법으로 Image를 Loading하고 CUI에서 ConsoleColor로 출력한다.


아래는 그 결과물이다.

보완해야하는 점으로 ConsoleColor가 제한적이다. 이는 Color를 ConsoleColor로 Convert해주는 함수로 해결하지만

실제 C# 콘솔에서는 아래의 색깔출력만 지원한다.

Black        #000000
DarkBlue     #00008B
DarkGreen    #006400
DarkCyan     #008B8B
DarkRed      #8B0000
DarkMagenta  #8B008B
DarkYellow   #000000
Gray         #808080
DarkGray     #A9A9A9
Blue         #0000FF
Green        #008000
Cyan         #00FFFF
Red          #FF0000
Magenta      #FF00FF
Yellow       #FFFF00
White        #FFFFFF

그래서 이를 보완해야한다.

또한 이미지 사이즈를 현제 pixel단위로 출력했지만 콘솔화면은 Height가 Width에 비해 작다.

아래 결과는 20x20 이미지인데 콘솔창이 거의 찼다. 이는 img 크기를 줄이는 방법으로 해결할 것이다.

대략 pixel을 뭉쳐서 1/4크기로 줄인다면 어느정도 해결할 수 있다.

다른 방법으로는 Console화면의 Char 출력 사이즈를 줄임으로써 해결하는 방법도 있을 것이다.


#추가

기존의 색깔을 선택해서 출력하는 방법과 달리 ASCII코드로 출력하는 방법을 작성한다.

기존의 이미지에서 RGB를 GrayImage로 변환하고 GrayImage의 밝기에 따라 ASCII코드 문자를 사용한다.

결과2는 ASCII코드 문자로 출력한 결과이다.


원본


결과1


결과2



반응형