아스키 아트 생성기 (이미지를 텍스트로)

어떤 사진이든 아스키 아트로 변환하세요 — 너비와 문자 밀도를 조절할 수 있고, 복사하거나 다운로드할 수 있는 흑백 텍스트로 출력됩니다.

조회수 1,161회

100

작동 방식

생성기는 이미지를 캔버스에 그린 다음 샘플링 셀의 격자로 나누고, 각 셀의 평균 밝기(휘도)를 계산합니다. 이 밝기 값은 미리 정의된 문자 밀도 스케일 — 예를 들어 @%#*+=-:. 같은 — 에 매핑되는데, 시각적으로 진하고 어두워 보이는 문자(@)부터 성기고 밝은 문자(마침표나 빈 공백)까지 이어집니다. 거의 검은색에 가까운 셀은 @가 되고, 거의 흰색에 가까운 셀은 공백이 되며, 그 사이의 모든 값은 측정된 밝기에 비례하여 스케일의 어딘가에 위치합니다. 이 단계에서 색상은 버려집니다 — 어떤 문자가 선택될지는 색조가 아니라 오직 휘도만으로 결정됩니다.

한 가지 까다로운 점이 있습니다. 고정폭 문자는 정사각형이 아니라 세로로 긴 직사각형이므로, 픽셀 하나를 문자 하나에 그대로 매핑하면 결과물이 원본 사진보다 세로로 늘어나 보입니다. 도구는 이 가로세로 비율 불일치를 보정하기 위해 열보다 대략 두 배 많은 행을 샘플링합니다 — 가로 방향으로는 픽셀 하나당 문자 하나, 세로 방향으로는 픽셀 두 개당 문자 하나 — 이렇게 하면 최종 아스키 아트의 비율이 인위적으로 길고 좁게 보이지 않고 원본 이미지에 가깝게 유지됩니다.

구체적인 예를 들면, 출력 너비를 100자로 샘플링한 사진은 2:1 세로 보정을 적용한 후 대략 100열 x 60-70행 정도로 만들어집니다 — 일반 텍스트 파일, 이메일, 터미널에 바로 붙여 넣을 수 있을 만큼 작으면서도, 색상의 흔적이 모두 사라졌음에도 문자 밀도 매핑이 원본의 전반적인 명암 패턴을 보존하기 때문에 여전히 알아볼 수 있습니다.

알아두면 좋은 점

모든 과정은 클라이언트 측에서 이루어집니다. 사진은 메모리 내의 <canvas> 요소에 그려지고 JavaScript로 픽셀 단위로 다시 읽히므로, 어떤 것도 서버로 전송되지 않습니다. 출력 너비를 조절해 세부 묘사와 크기를 맞바꿀 수 있습니다 — 좁은 너비는 압축되고 더 추상적인 결과를 만들고, 넓은 너비는 훨씬 큰 텍스트 블록을 대가로 더 세밀한 디테일을 보존합니다 — 그리고 결과가 어두운 배경(터미널)에 표시될지 밝은 배경(인쇄된 페이지나 흰색 문서)에 표시될지에 따라 밀도 스케일을 반전할 수도 있습니다.

자주 묻는 질문

결과물이 왜 늘어나거나 눌린 것처럼 보이나요?

고정폭 문자는 폭보다 높이가 크기 때문에, 도구가 일반 픽셀 격자보다 약 두 배 많은 행을 샘플링해 이를 보정합니다 — 이렇게 하면 원본 이미지와 비슷한 비율이 유지됩니다. 이 보정이 없다면 정사각형 사진도 고정폭 글꼴로 렌더링될 때 눈에 띄게 길고 좁게 보일 것입니다.

도구는 이미지의 각 부분에 어떤 문자를 쓸지 어떻게 결정하나요?

샘플링된 각 셀의 평균 밝기를 계산하고, 그 값을 시각적으로 진한 문자(@나 # 등)부터 성긴 문자(.이나 공백 등)까지 순서대로 정렬된 고정 밀도 스케일에 매핑합니다 — 어두운 영역에는 더 진하게 보이는 문자가, 밝은 영역에는 더 성긴 문자가 배정됩니다. 이 매핑에는 오직 휘도만 사용되며, 각 영역의 원래 색상은 어떤 문자가 선택되는지에 영향을 주지 않습니다.

문자 스케일을 반전해야 하나요?

결과를 어두운 배경(터미널 등)에 표시할 거라면 기본값을 유지하세요. 밝은 배경(흰색 문서 등)에 붙여 넣을 거라면, 어두운 영역이 시각적으로 계속 "무겁게" 보이도록 반전하세요 — 그렇지 않으면 명암 관계가 뒤집혀 원본의 사진 네거티브처럼 보일 수 있습니다.

이 도구가 제 사진을 어딘가에 업로드하나요?

아니요 — 이미지는 브라우저를 벗어나지 않습니다. 로컬 캔버스 요소에 그려지고 전적으로 클라이언트 측에서 샘플링되며, 서버 왕복 없이 동작하는 다른 브라우저 내 이미지 편집 도구와 동일한 방식입니다.

출력 너비를 높이면 왜 더 세밀한 결과가 나오나요?

너비는 이미지를 나누는 샘플링 셀의 개수를 결정합니다 — 셀이 많을수록 각 셀이 원본 사진에서 차지하는 영역이 작아지므로 밝기가 더 세밀하게 측정되고, 눈이나 나뭇잎의 가장자리, 미세한 질감 같은 작은 디테일이 하나의 평평한 문자로 뭉개지지 않고 변환 과정에서 살아남습니다.

댓글

아직 댓글이 없습니다 — 첫 댓글을 남겨보세요!

비슷한 도구