2000년에 필자는 여러 가지 이유로 웹상에서 code39 바코드를 QR코드로 변환해야 겠다고 생각했다.
당시에 바코드의 구조는 인터넷에 있었지만, QR코드의 구조는 알 수 없었다.
(지금은 QR코드의 구조를 JISC에서 일본어 문서를 통해 알 수 있다.)
그래서 필자는 QR코드의 생성 방법을 구현하는 것이 유용하다고 생각했고, 이 문서를 만들었다.
QR코드는 DENSO Corporation에 의해 개발되었다. 이는 JIS와 ISO로부터 표준으로 지정되었다.
이 문서는 JIS X 0510(1999)에 기초를 두고 작성되었다.
더 자세한 사항을 알고 싶다면, 이 표준을 참고하여라.
QR코드는 2차원으로 정보를 나타내는 하나의 기호이다.
아래 이미지는 QR코드의 예이다.
다음은 QR코드의 특징들이다.
QR코드 모델 1 : 원래의 모델
QR코드 모델 2 : 확장된 모델
최근에는 모델 2가 더 많이 쓰인다. 또한 이 문서에서는 모델 2만을 설명한다.
QR코드는 색을 거꾸로 읽었을 때에 대비해 오류 정정 기능을 갖추고 있다.
오류 정정 단계는 아래 4단계로 구분된다.
QR코드의 크기는 버전에 의해 결정된다. 버전은 1부터 40까지의 수로 표현한다.
버전 1은 21*21의 크기를 나타낸다. 버전의 수가 하나 올라갈 때마다 가로, 세로로 4칸씩 늘어난다.
그래서 버전 40은 177*177의 크기를 나타내게 된다.
아래 그림은 QR코드 모델 2 버전 1의 구조를 나타낸다. 아래 그림에서 하얀색과 검은색 칸은 고정된 부분을 의미한다. 그것들은 "파인더 패턴"과 "타이밍 패턴" 이다.
"파인더 패턴"은 디코더 어플리케이션에서 QR코드의 위치를 잡아내는데 도움을 준다.
"타이밍 패턴"은 디코더 어플리케이션이 QR코드의 좌표를 검출하는데 도움을 준다.
노란색 부분에는 인코딩 된 데이터와 오류 정정 코드가 함께 저장된다.
그리고 하늘색 부분에는 오류 정정 단계와 마스크 패턴이 기록된다. 이를 형식 정보라고 한다.
□ 파인더 패턴
□ 타이밍 패턴
■ 인코딩 된 데이터와 오류 정정 코드
■ 형식 정보
추가적으로, 버전 2 이상의 QR코드에는 디코더 어플리케이션의 비대칭도를 보정하기 위한 "얼라이먼트 패턴" 이 존재한다.
그리고 버전 7 이상의 QR코드에는 자신의 버전 정보를 포함한 "버전 정보" 항복이 존재한다.