QR là viết tắt của quick response, là một loại mã vạch đặc biệt có thể mã hóa thông tin như số, chữ cái, và kí tự kanji được tạo bởi công ty Denso-Wave là một công ty con của tập đoàn Toyota.
Hiện nay có rất nhiều loại QR code như:
- QR code model 1 & 2: loại chúng ta thường thấy.
- Micro QR code: một loại QR code nhỏ.
- SQRC, iQR code, frame QR code,...
Trong bài viết này mình sẽ chỉ tập trung vào QR code model 2 vì từ tháng 9 năm 2006 ISO ISO/IEC 18004 cũng đã loại việc đọc mã QR code model 1 (đoạn này mình không biết nói sao cho đúng ý nhất nhưng vì sự vượt trội của QR model 2 nên phải loại model 1 để có tính thống nhất ấy).
QR model 1
Mã QR code gốc có thể mã hóa 1167 số và có tối đa 14 phiên bản (73x73)
QR model 2
Bản cải thiện của model 1 có thể mã hóa 7089 số và có tối đa 40 phiên bản (177x177).
Mã QR luôn có hình vuông và được phân chia làm 40 phiên bản dựa vào kích thước của chúng.
Phiên bản 1 sẽ có kích thước là 21x21.
Phiên bản 2 sẽ có kích thước là 25x25.
Phiên bản 3 sẽ có kích thước là 29x29.
....
Và cứ mỗi phiên bản sau sẽ lớn hơn phiên bản trước 4 đơn vị và đến phiên bản tối đa là 40 với kích thước là 177x177.
Kích thước của mã QR được xác định bởi công thức:
(V-1)*4+21
với V là phiên bản mã QR
Vây với phiên bản 30 ta sẽ có kích thước là 137x137.
Về kích thước:
Chắc hẳn các bạn sẽ thắc mắc tại sao có những ảnh phiên bản khác nhau nhưng lại cùng kích thước. Lý do là kích thước đó phụ thuộc vào bạn quy định bao nhiêu pixel cho một hàng, cột. Nếu bạn quy định 1 pixel là 1 hàng và 1 cột thì kích thước của 2 ảnh chắc chắn sẽ khác nhau. Vì vậy thay vì quyết định dựa trên số pixel của bức ảnh hãy dựa vào số hàng và cột của QR code đó. Trong bài viết này mình dựa vào hàng và cột như vậy sẽ dễ phân biệt và thuận tiện hơn trong bài viết.
Về dung lượng:
Dung lượng của mã QR phụ thuộc vào cấp độ sửa lỗi và phiên bản. Có bốn chế độ dữ liệu bao gồm: số, chữ và số, nhị phân, chữ kanji. Và bốn chế độ sửa lỗi: L, M, Q, H (mình sẽ nói kỹ hơn ở dưới). Các bạn có thể truy cập trang
này đễ xem dung lượng tối đa mà mã QR có thể chứa dựa trên cấp sửa lỗi.
Về màu sắc mã:
QR luôn có hai màu là đen và trắng trong đó đen sẽ đại diện cho bit 1 còn trắng đại diện cho bit 0.
Cấu trúc của mã QR được thể hiện qua hình sau:
Vùng finder
Vùng finder là 3 ô vuông đen lớn ở ba góc trái trên, phải trên và trái dưới bất kể phiên bản mã QR nào. Vùng này giúp cho thiết bị đọc mã xác định đươc ảnh QR và thực hiện việc đọc dữ liệu. Chính nhờ có vùng này mà khi chúng ta quay ảnh QR ngang, chéo thì điên thoại chúng ta vẫn có thể đọc được.
Mỗi ô vuông của vùng finder luôn có viền màu đen bên ngoài kích thước là 7 bên trong là một hình vuông trắng kích thước 5 và ở giữa là ô vuông đen 3x3.
Để xác định ví trị đặt 3 ô finder ta có công thức tính như sau:
Góc trái trên luôn luôn đặt tại vị trí (0,0)
Góc trái dưới đặt tại ví trí (x,0)
Góc phải trên đăt tại ví trí(0,y)
Trong đó x,y được tính bằng công thức:
(V-1)*4+14
với V là phiên bản mã QR.
Phiên bản 1
Vùng separators
Là vùng trắng bao quanh vùng finder giúp tách vùng finder và phần còn lại của mã QR.