텍스트를 사용하여 QR 코드를 생성할 수 있나요?

텍스트를 사용하여 QR 코드를 생성할 수 있나요?

제가 본 QR코드는 대부분 이미지 파일이었습니다. 하지만 일반 텍스트를 사용하여 QR 코드를 만들 수 있습니까?

예를 들어 ASCII 및 UTF-8에는 검은색 상자가 문자로 포함되어 있습니다. 공백과 함께 사용하여 QR 코드를 만들 수 있나요?

답변1

예! 라는 유틸리티가 있습니다.qrencode이를 렌더링할 수 있습니다.

QR 코드에서 유일하게 중요한 요소는 2D 배열이 "더 어둡다" 그리고 "더 가벼워지다"픽셀/세그먼트. 색상도 지정할 수 있지만 대비가 문제가 될 수 있습니다.

아스키

이 QR 코드를 읽는 능력은 카메라의 해상도, 거리, 사용 중인 소프트웨어에 따라 달라질 수 있습니다.

qrencode -t ASCIIi 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

-t ASCIIi참고: 터미널이 검정색 바탕에 흰색이므로 (Inverted ASCII)를 사용했습니다 .

ASCII QR 코드

안시

이 모드는 배경색을 검정색 또는 흰색으로 설정하고 여러 공백 문자를 인쇄하는 방식으로 작동합니다.

qrencode -t ANSI 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

ANSI QR 코드

터미널에 기록된 일부 원시 문자는 다음과 같습니다.ANSI 이스케이프 코드. "탈출하다" 문자의 값은 0x1b이며 종종 로 쓸 수 있습니다 \e.

  • \e[40m배경색을 검은색으로 설정
  • \e[47m배경색을 흰색으로 설정
  • 0x20ASCII 공간입니다

ANSI QR 코드 원시

UTF-8

UTF-8 모드( )도 있습니다 -t UTF8. 이 모드는 "반 블록" 문자를 사용하여 밀도를 높이고 줄 수를 절반으로 줄였습니다.

  • ▀ - U+2580 / 상반부 블록
  • ▄ - U+2584 / 하단 하프 블록
  • █ - U+2588 / 풀 블록

@grawity의 스크린샷(감사합니다)

qrencode -t UTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
qrencode -t ANSIUTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

UTF-8 QR 코드

답변2

Attie의 답변은 qrencode훌륭하지만 어떤 이유로 항상 내 바코드 스캐너 앱이 읽을 수 없는 반전된 색상의 qr 코드를 출력합니다.

UTF-8 출력을 반전시키는 것은 결코 사소한 일이 아니므로 다른 사람들을 위해 여기에 남겨두기로 생각했습니다. ;)

qrencode=`qrencode -t UTF8  "https://superuser.com/q/1420001/551559"`
echo "${qrencode}"

# replace black
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x88'`/A/g)
echo "${qrencode}"

# replace white
qrencode=$(echo "${qrencode}" | sed s/\ /B/g)
echo "${qrencode}"

# swap black for white
qrencode=$(echo "${qrencode}" | sed s/A/\ /g)
echo "${qrencode}"

# swap white for black
qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x88'`/g)
echo "${qrencode}"

# replace "Upper Half Block"
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x80'`/A/g)
echo "${qrencode}"

# replace "Lower Half Block"
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x84'`/B/g)
echo "${qrencode}"

# swap upper for lower
qrencode=$(echo "${qrencode}" | sed s/A/`echo -e '\xe2\x96\x84'`/g)
echo "${qrencode}"

# swap lower for upper
qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x80'`/g)
echo "${qrencode}"

저는 이것을 qr 코드로 utf-8 일반 텍스트 메시지에 암호화 방식으로 서명하고 이를 내 웹사이트에 html로 표시하기 위해 사용합니다.

<pre>html이 줄 간격으로 qr 코드 가독성을 손상시키지 않고 이를 달성하기 위해 다음과 같이 CSS 스타일이 있는 블록 내부에 qr 코드를 넣습니다 .

<pre style="line-height:1em; letter-spacing: -1px; font-size: x-large;">
...
</pre>

실제 예를 보려면 다음을 참조하세요.

관련 정보