C를 사용하여 이미지를 ASCII 아트로 변환
이 접근 방식은 고정폭 글꼴을 사용하며 회색조 이미지를 처리할 수 있습니다.
픽셀/영역 강도 기반 변환(음영)
- 이미지를 픽셀 또는 직사각형 영역(점)으로 나눕니다.
- 각각에 대한 평균 그레이 스케일 강도를 계산합니다. 점.
- 각 점을 가장 가까운 강도를 갖는 문자로 바꾸십시오.
- 문자 맵을 사용하여 문자를 강도와 연결하십시오.
- 결과 ASCII 아트는 종횡비와 원본 이미지의 명암 분포.
문자 맞춤(하이브리드 접근 방식)
이 방법은 명암만을 기준으로 하는 것이 아니라 이미지의 영역을 문자와 일치시키려는 방법입니다. 모양에도 적용됩니다.
- 이미지를 대상 글꼴과 가로세로 비율이 동일한 직사각형 영역으로 나눕니다.
- 글꼴의 각 문자를 영역(왼쪽, 오른쪽, 위쪽)으로 나눕니다. , 아래, 중앙).
- 이미지와 글꼴의 각 영역에 대한 강도를 계산합니다.
- 이미지 영역의 강도와 모양에 가장 잘 맞는 문자를 찾습니다.
- 그 결과 세부 사항은 유지하면서 더 큰 글꼴로 시각적으로 더욱 만족스러운 ASCII 아트가 생성됩니다.
문자 맞춤을 위한 예제 코드
<code class="c++">class intensity {
char c;
int il, ir, iu, id, ic;
void compute(DWORD **p, int xs, int ys, int xx, int yy) {
// Compute intensities for left, right, up, down, and center zones
...
}
};
AnsiString bmp2txt_big(Graphics::TBitmap *bmp, TFont *font) {
// Character sized areas
...
}</code>
비교
-
강도 기반 변환: 구현이 쉽고 빠르며 픽셀-문자 매핑을 통해 큰 출력을 생성합니다. 더 큰 이미지에 적합합니다.
-
문자 맞추기: 더 느리고 더 복잡하며 더 큰 글꼴에서도 더 나은 결과를 얻을 수 있습니다. 얼굴과 일부 복잡한 이미지의 모양과 세부 정보를 유지합니다.
팁
- OEM 문자 세트와 함께 고정 피치 글꼴(예: 시스템)을 사용하세요. .
- 다양한 문자 맵과 영역 레이아웃을 실험해 보세요.
- 흰색 배경에서 더 나은 텍스트 미리보기를 위해 검은색 픽셀이 최대값을 갖는 반전된 강도를 고려하세요.
위 내용은 C를 사용하여 이미지를 ASCII 아트로 변환하는 방법: 강도 기반 대 문자 피팅?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!