이미지 → 아스키 아트 변환기

사진을 아스키 아트로 변환 (TXT·PNG 저장)

이미지를 여기에 끌어다 놓으세요

또는 클릭해서 파일 선택 (JPG, PNG, WebP)

이미지 → 아스키 아트 변환기 소개

아스키 아트 변환은 이미지를 격자로 나누고, 칸마다 평균 밝기를 구해 그 밝기에 맞는 「진하기」의 문자를 놓는 작업입니다. 이 도구는 열 수(20~300, 초정밀 모드는 최대 2,400)를 정하면 행 수를 자동으로 계산하고, 문자셋·반전·감마·자동 대비·컬러 여부를 바꿔 가며 결과를 텍스트나 PNG로 저장하게 해 줍니다.

결과의 품질을 좌우하는 것은 세 가지입니다. 어떤 문자를 어떤 순서로 쓰는지(밝기 램프), 글자 칸이 정사각형이 아니라는 점을 어떻게 보정하는지(종횡비), 그리고 원본의 밝기 분포가 램프 전체를 쓰도록 펼쳐져 있는지입니다.

밝기 램프: 문자를 진하기 순으로 줄 세우기

기본 10단계 램프는 「 .:-=+*#%@」입니다. 공백은 종이를 거의 가리지 않고, @는 칸의 상당 부분을 잉크로 채웁니다. 70단계 램프는 1997년 Paul Bourke가 정리한 목록을 밝은 쪽부터 뒤집은 것으로, 단계가 많아 부드러운 그러데이션에 유리하지만 문자마다 모양이 제각각이라 작은 크기에서는 오히려 지저분해 보일 수 있습니다.

문자의 진하기는 글꼴마다 다릅니다. 같은 「#」도 Consolas와 D2Coding에서 칠해지는 면적이 다르므로, 램프 순서는 「대체로 맞는」 순서일 뿐입니다. 블록 문자 램프(░▒▓█)는 채움 비율이 명확해서 순서가 안정적이지만, 일부 한글·일본어 글꼴에서는 두 칸 폭으로 그려집니다. 이 도구의 PNG 저장은 라틴 고정폭 글꼴을 먼저 쓰고 글자를 칸 너비 안에 맞춰 그리므로 격자가 유지되지만, TXT 파일은 여는 프로그램의 글꼴을 따르므로 한글 글꼴이 기본인 메모장 등에서는 틀어질 수 있습니다.

기본 매핑은 흰 바탕에 검은 글씨 기준입니다. 밝은 칸에는 공백을, 어두운 칸에는 @를 둡니다. 검은 터미널 배경에 붙여 넣을 거라면 반전을 켜야 원본처럼 보입니다. 반전을 켜지 않으면 사진의 네거티브처럼 나옵니다.

글자 칸은 세로로 길다: 종횡비 보정

고정폭 글꼴 한 칸은 보통 폭보다 높이가 1.8~2배 정도 큽니다. 이미지를 가로세로 같은 간격으로 잘라 한 칸에 한 글자씩 놓으면, 결과가 세로로 그만큼 늘어납니다. 그래서 행 수를 「열 수 × 원본 세로/가로 × 문자 종횡비」로 줄입니다. 이 도구의 기본값은 0.55이며 0.3~1 사이에서 조절할 수 있습니다.

결과가 납작하거나 길쭉해 보이면 이 값을 붙여 넣을 곳의 글꼴에 맞추면 됩니다. 줄 간격(line-height)을 넓게 쓰는 편집기나 블로그에 붙이면 세로로 더 늘어나므로 값을 낮추세요.

칸의 밝기는 어떻게 구하나

각 칸은 해당 영역 픽셀의 평균색으로 요약합니다(한 점만 뽑지 않고 블록 평균을 씀). 투명 픽셀은 알파만큼 덜 반영하고, 완전히 투명한 칸은 흰 배경으로 봅니다. 투명 PNG 로고의 바깥이 검은 @ 덩어리로 채워지지 않는 이유입니다.

밝기는 0.2126R + 0.7152G + 0.0722B 가중합입니다. 감마를 풀지 않은 값을 그대로 쓰지만, 문자를 고르는 데 필요한 것은 밝기의 순서라서 실용상 문제는 없습니다. 흐린 사진은 밝기가 가운데에 몰려 램프 양 끝을 쓰지 못하므로, 자동 대비를 켜면 상하위 2%를 잘라 낸 범위를 0~255로 펼쳐 줍니다.

예시

행 수 계산

입력
1920×1080 이미지, 120열, 종횡비 0.55
결과
120 × 37 격자

120 × (1080/1920) × 0.55 = 37.1 → 37행. 보정 없이(1.0) 68행으로 만들면 세로로 약 1.8배 늘어난 그림이 됩니다.

밝기에서 문자로 (10단계, 반전 없음)

입력
밝기 255 / 200 / 30 / 0
결과
공백 / : / % / @

(255 − 밝기)/255 × 10의 정수 부분이 인덱스입니다. 200 → 2.16 → 「:」, 30 → 8.82 → 「%」, 0 → 10이지만 마지막 칸(9) 「@」로 제한됩니다.

자동 대비의 효과

입력
칸 밝기 60, 전체 분포의 2%·98% 지점이 40과 200
결과
「#」 → 「%」

(60 − 40)/(200 − 40) × 255 = 31.9로 펼쳐져 더 진한 문자가 됩니다. 그림자 부분이 한 단계씩 깊어져 윤곽이 또렷해집니다.

사용 방법

  1. 이미지를 끌어 놓거나 선택합니다.
  2. 열 수와 문자셋을 고르고, 어두운 배경에 쓸 거면 반전을 켭니다.
  3. 비율이 이상하면 문자 종횡비를, 흐릿하면 자동 대비나 감마를 조정합니다.
  4. 텍스트로 복사하거나 TXT·PNG로 저장합니다.

자주 묻는 질문

메신저에 붙였더니 모양이 깨집니다.

고정폭 글꼴이 아니면 문자마다 폭이 달라 격자가 무너집니다. 코드 블록(```)으로 감싸거나 PNG로 저장해 공유하세요.

몇 열이 적당한가요?

터미널이나 README에 넣을 거라면 80~120열, 확대해서 볼 이미지라면 200열 이상이 좋습니다. 열이 많을수록 사진에 가까워지고 글자 느낌은 약해집니다.

컬러 모드는 텍스트로 복사해도 색이 남나요?

아니요. 일반 텍스트에는 색 정보가 없어 문자만 복사됩니다. 색을 유지하려면 PNG로 저장하세요.

출처

기준일:

개인정보와 저장 방식