Tiếng Việt

Văn bản & công cụ hàng ngày · Bộ công cụ QR & Barcode

Cách xây dựng mã QR: từ văn bản đến mô-đun đen trắng

· Cách thức hoạt động

qr-code mã hóa browser-processing

Tải trọng văn bản chảy vào lưới mô-đun QR có cấu trúc
Hình minh họa vector ToolAcre gốc

Đi theo một URL ngắn qua từng giai đoạn mã hóa QR — chọn chế độ, sửa lỗi, sắp xếp, che giấu — để lưới đen trắng không còn trông giống nhiễu nữa.

Lưới trông có vẻ ngẫu nhiên nhưng không phải vậy — tại sao URL giống nhau luôn tạo ra cùng một mã và mỗi vùng của hình vuông dùng để làm gì

Lưới là dữ liệu có cấu trúc, không phải tiếng ồn trang trí. ToolAcre nhận cùng một văn bản, sử dụng cùng một lựa chọn sửa lỗi và trả về cùng một ma trận mô-đun boolean, bao gồm ba vùng tìm kiếm mà các thử nghiệm của nó kiểm tra ở các góc.

Độ lặp lại đó rất hữu ích trong quá trình xem xét. Nếu hai bản xuất từ ​​văn bản và cài đặt giống hệt nhau khác nhau, hãy điều tra đầu vào, bộ chọn hiệu chỉnh hoặc đường dẫn hiển thị thay vì chấp nhận biến thể trực quan là vô hại. Những thử thách tránh so sánh một bức tranh vàng mong manh; họ xác nhận một mảng boolean vuông, các kích thước hợp lệ và ba mẫu công cụ tìm. Những lần kiểm tra đó tách biệt cấu trúc được mã hóa khỏi các lựa chọn sau này như màu sắc, độ rộng vùng yên tĩnh và tỷ lệ đầu ra.

Bước 1: ToolAcre cố tình sử dụng chế độ byte UTF-8 thay vì chọn trong số bốn chế độ

Tiêu đề sổ làm việc gợi ý một bộ mã hóa chọn chế độ số, chữ và số, byte hoặc kanji. Việc triển khai này không: nó cố tình mã hóa trước mọi tải trọng bằng TextEncode và chuyển UTF-8 byte đó qua thư viện QR ở chế độ byte.

Đường dẫn cố định này ngăn chặn lỗi phụ thuộc thầm lặng. Thư viện QR đã nhập sẽ xử lý các ký tự JavaScript là tiếng Latin-1 bytes, vì vậy quán cà phê có thể chứa một byte E9 thay vì cặp UTF-8 C3 A9, trong khi ký tự tiếng Nhật có thể thu gọn thành dữ liệu không liên quan. ToolAcre chuyển đổi theo từng đoạn trước khi gọi thư viện, tránh giới hạn số lượng đối số đối với tải trọng lớn hơn và tránh bản vá khỉ toàn cầu có thể ảnh hưởng đến người gọi khác.

Bước 2: chọn phiên bản và mức sửa lỗi — độ dài văn bản và mức đã chọn cố định kích thước lưới từ 21×21 trở lên như thế nào

Thư viện tự động chọn phiên bản QR nhỏ nhất phù hợp với byte ở mức hiệu chỉnh đã chọn. ToolAcre xác minh rằng ma trận hợp lệ phát triển theo các bước bốn mô-đun tiêu chuẩn, từ 21 mô-đun mỗi bên cho đến mức tối đa được triển khai là 177.

Mức đã chọn sẽ thay đổi cả dung lượng byte khả dụng và phiên bản cần thiết cho tải trọng. Bảng điều khiển đo trọng tải đã chuẩn bị bằng TextEncode, so sánh nó với mức trần được định cấu hình cho cấp đó và hiển thị cả hai số liệu bên cạnh bản xem trước. Nếu thư viện không thể khớp giá trị, người dùng sẽ nhận được hướng dẫn rút ngắn giá trị hoặc giảm mức hiệu chỉnh thay vì bản xem trước trống hoặc ma trận thiếu byte ở cuối.

Bước 3: thư viện QR thêm dữ liệu sửa lỗi nội bộ; ToolAcre hiển thị cấp độ đã chọn

ToolAcre hiển thị L, M, Q và H dưới dạng các lựa chọn, nhưng cấu trúc khối Reed–Solomon nằm trong phần phụ thuộc của trình tạo qrcode. Tuyên bố có thể bào chữa được là việc chọn mức độ mạnh hơn có thể tạo ra ma trận lớn hơn cho nội dung giống hệt nhau, như các thử nghiệm đã chứng minh.

Kiểm tra cấu trúc làm cho ranh giới này có thể được quan sát mà không yêu cầu quyền sở hữu toán học bên trong phần phụ thuộc. Ma trận được tạo phải có các hàng và cột có độ dài bằng nhau, các kích thước tuân theo tiến trình 21, 25, 29 và các hình dạng tìm kiếm viền tối, vòng sáng, tâm tối. Sau đó, lỗi trình kết xuất có thể được chẩn đoán riêng: nếu ma trận boolean vượt qua nhưng quá trình xuất không thành công thì lỗi xảy ra sau khi mã hóa chứ không phải ở tải trọng hoặc dữ liệu hiệu chỉnh.

Bước 4: các mẫu hàm — các mẫu tìm kiếm, dấu phân cách, thời gian và căn chỉnh cũng như dải thông tin định dạng

Các mẫu trình tìm kiếm, cấu trúc thời gian và các vùng dành riêng khác đã có sẵn khi thư viện trả về ma trận của nó. ToolAcre chuyển đổi kết quả đó thành các boolean chính của hàng và kiểm tra ba công cụ tìm góc 7-by-7 thay vì tự triển khai lại các cấu trúc đó.

Ứng dụng vẫn kiểm soát cách ma trận đã xác minh đó tiếp cận một tệp. Đầu ra SVG hợp nhất các mô-đun tối liền kề trong mỗi hàng thành các đường chạy, giảm đánh dấu trong khi vẫn giữ chính xác các cạnh lân cận. Đầu ra canvas vẽ một hình chữ nhật toàn pixel cho mỗi ô tối. Cả hai đường dẫn đều thêm vùng yên tĩnh đã chọn xung quanh chứ không phải bên trong ma trận, do đó việc thay đổi lề hoặc màu sắc không thể thay đổi tải trọng được mã hóa.

Bước 5: mặt nạ ma trận được xử lý bên trong thư viện QR thay vì được chọn bởi mã ToolAcre

Lựa chọn mặt nạ cũng thuộc về phần phụ thuộc, vì vậy bài viết này không giả vờ ToolAcre chứa vòng lặp tính điểm tám ứng cử viên hiển thị. Những gì ứng dụng sở hữu là giao diện ma trận ổn định và đường dẫn kết xuất tiêu thụ các mô-đun sáng và tối của nó.

Ranh giới đó quan trọng khi gỡ lỗi một mã có vẻ ngoài làm bạn ngạc nhiên. ToolAcre không được tiết lộ mặt nạ ứng cử viên nào của phần phụ thuộc đã giành chiến thắng hoặc tái tạo điểm phạt trong giao diện; nó có thể tái tạo mảng mô-đun cuối cùng cho cùng một đầu vào. Do đó, việc so sánh các mảng rất có ý nghĩa, đồng thời việc giải thích một mảng cụ thể gồm các ô xen kẽ dưới dạng mặt nạ được chọn bằng tay sẽ vượt xa những gì mã này ghi lại.

Ví dụ đã hoạt động: so sánh tải trọng UTF-8 có thể quan sát được, kích thước ma trận và các mô-đun được hiển thị

Hãy thử một menu ngắn URL, ghi lại số lượng mô-đun được trả về rồi nối thêm một chuỗi truy vấn dài. Bài học có thể quan sát được là nhiều UTF-8 byte hơn có thể yêu cầu ma trận dày đặc hơn; kho lưu trữ không hiển thị các chuỗi bit hoặc từ mã trung gian để tính toán bằng tay.

Để so sánh hữu ích, hãy giữ mức M và các màu không đổi, sau đó tạo `https://example.com/menu` và cùng một địa chỉ có giá trị truy vấn dài. Ghi lại bộ đếm byte và kích thước ma trận được hiển thị bởi bảng điều khiển. Đầu vào thứ hai có thể vượt qua ranh giới phiên bản mặc dù cả hai đều là “một URL”. Sự khác biệt đến từ số byte được mã hóa chứ không phải số từ hoặc độ dài rõ ràng của trang đích.

Bài học rút ra: mã hóa mang tính cục bộ, trong khi hoạt động mạng cấp trang phải được đánh giá riêng

Hoạt động tải trọng đến ma trận được thực hiện bởi trình duyệt JavaScript và kết xuất SVG hoặc PNG sử dụng ma trận trong bộ nhớ đó. Điều đó hẹp hơn so với việc tuyên bố toàn bộ trang không có mạng: việc triển khai có thể tải các tài nguyên trang không liên quan, vì vậy hãy kiểm tra các yêu cầu trước khi sử dụng bí mật.

Tuyên bố về quyền riêng tư hạn hẹp cũng có thể được kiểm tra mà không cần tin tưởng vào bản sao tiếp thị. Xóa các công cụ dành cho nhà phát triển, nhập một chuỗi vô hại đặc biệt và tạo mã, sau đó tìm kiếm các URL và nội dung yêu cầu mới cho chuỗi đó. Các chức năng mã hóa không chứa lệnh gọi tìm nạp nhưng thử nghiệm vẫn phải được thực hiện trên trang đã triển khai vì các kiểu, phân tích hoặc tiện ích mở rộng tách biệt với việc triển khai tải trọng đến ma trận được xem xét ở đây.