>php教程 >PHP开发 >이모티콘 문자를 사용하여 중국어 문자 만들기

이모티콘 문자를 사용하여 중국어 문자 만들기

高洛峰
高洛峰원래의
2016-11-23 15:51:585294검색

한자를 구성하거나 간단한 그림을 그리는 이모티콘 표현을 활용하는 방법이 위챗이나 QQ에 널리 퍼져있어서 직접 만들어볼까 하는 생각도 들었습니다.

예를 들어 아래 사진은

이모티콘 문자를 사용하여 중국어 문자 만들기

처음에 떠오른 구현 계획은 먼저 한자를 흰색 배경에 검은색 문자가 있는 그림으로 변환한 다음 그림을 회색조 값을 기준으로 다른 문자로 매핑하는 것이었습니다. ​그리고 터미널에서 인쇄하세요.

이전의 텍스트-그림 변환은 일반적인 그리기 라이브러리(예: Python의 PIL 라이브러리)를 사용하여 구현하기가 매우 쉽습니다. 작업량은 원하는 효과를 얻기 위해 구현 프로세스 중에 조판을 천천히 조정하는 것 이상입니다. .

후자는 단순한 매핑 관계입니다. 이 구현에서는 그림에 있는 픽셀의 회색 값을 특정 문자에 매핑합니다. 검정색 배경에 흰색 문자가 있는 그림에 대해서는 두 가지 매핑 관계만 있습니다. , 해당 검정색 문자는 이모티콘 문자로 대체되어야 하며 흰색 배경은 공백에 해당합니다.

이 부분의 Python 구현 코드는 다음과 같습니다.

ascii_char = list('1234567890abcd ')  # 任意多个字符,灰度值的映射区间

def select_ascii_char(r, g, b):
    ''' 在灰度图像中,灰度值最高为255,代表白色; 最低为0,代表黑色 '''
    # 把RGB转为灰度值,并且返回该灰度值对应的字符标记
    # 'RGB-灰度值'转换公式如下
    gray = int((19595 * r + 38469 * g + 7472 * b) >> 16)
    # ascii_char中的一个字符所能表示的灰度值区间
    unit = 256.0 / len(ascii_char)
    return ascii_char[int(gray/unit)]

select_ascii_char는 픽셀 매핑을 구현합니다.

이 함수 구현에서 ascii_char는 더 간단하며 두 문자만 필요합니다. 하나는 무작위로 제공되고 다른 하나는 공백입니다.

따라서 ascii_char를 다음으로 바꾸세요. [u'❤️ ' , u' ']

이미지의 픽셀을 단말기에서 인쇄할 수 있는 문자로 매핑해야 하므로 단말기의 표시 공간이 제한되어 있으므로 이미지는 축소하고 조정하세요.

zh2emoji 코드 내 github에 해당 코드 다운로드가 있습니다. 관심이 있으시면 포크하여 원하는 더 많은 사용자 정의 기능을 얻을 수 있습니다.

표시

"fennel"이라는 단어가 있습니다. N 여러 가지 쓰기 방법:

print image2print(word2image(u'茴'), u'❤️ ')
print image2print(word2image(u'茴'), u'W ')
print image2print(word2image(u'茴'), u'茴', width=40)

출력 결과는 다음과 같습니다.

이모티콘 문자를 사용하여 중국어 문자 만들기

이모티콘 문자를 사용하여 중국어 문자 만들기

이모티콘 문자를 사용하여 중국어 문자 만들기

추가 출력:

이모티콘 문자를 사용하여 중국어 문자 만들기

이모티콘 문자를 사용하여 중국어 문자 만들기

확장

기반 zh2emoji에서는 유용할 수 있는 확장 기능인 데모_show_animation.py를 구현했습니다.

이모지나 사용자가 결정한 다른 문자를 사용하여 터미널에서 문장을 순서대로 인쇄할 수 있습니다.

예를 들어 python ./demo_show_animation.py를 실행하려고 하면 마음에 들면 클릭하세요. 터미널에 텍스트를 표시하는 애니메이션이 실행됩니다. 표시되는 텍스트는 방금 입력한 내용입니다.

만약 이 시점까지 버틸 수 있습니다. 흥미로운 게임플레이를 생각해 보셨나요? 환영합니다. 함께 참여해 보세요. 프로그래밍은 일종의 재미이고, 코드는 정신적 아이디어를 실현하기 위한 매체입니다. 프로그래머는 작가가 단어를 쓰는 것처럼 코드를 작성합니다.

향후 단말기에서 이모지로 구성된 애니메이션(부카걸 로딩 애니메이션 등)을 재생할 계획도 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.