제가 본 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)를 사용했습니다 .
안시
이 모드는 배경색을 검정색 또는 흰색으로 설정하고 여러 공백 문자를 인쇄하는 방식으로 작동합니다.
qrencode -t ANSI 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
터미널에 기록된 일부 원시 문자는 다음과 같습니다.ANSI 이스케이프 코드. "탈출하다" 문자의 값은 0x1b
이며 종종 로 쓸 수 있습니다 \e
.
\e[40m
배경색을 검은색으로 설정\e[47m
배경색을 흰색으로 설정0x20
ASCII 공간입니다
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'
답변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>
실제 예를 보려면 다음을 참조하세요.