文字與日常工具·二維碼與條碼工具包
QR 碼是如何建構的:從文字到黑白模組
· 工作原理
二維碼 編碼 瀏覽器處理
在 QR 編碼的每個階段(模式選擇、糾錯、放置、屏蔽)都遵循一個短 URL,因此黑白網格不再看起來像噪音。
網格看起來是隨機的,但實際上並非如此 - 為什麼相同的 URL 總是產生相同的程式碼,以及正方形的每個區域的用途
網格是結構化資料,而不是裝飾性噪音。 ToolAcre 接收相同的文字,使用相同的錯誤修正選擇,並傳回相同的布林模組矩陣,包括其測試在角落檢查的三個查找器區域。
可重複性在審核過程中很有用。如果相同文字和設定的兩次匯出不同,請調查輸入、校正選擇器或渲染路徑,而不是認為視覺變化是無害的。這些測試避免比較脆弱的黃金圖片;他們斷言一個方形布林數組、有效維度和三個查找器模式。這些檢查將編碼結構與後續選擇(例如顏色、靜區寬度和輸出比例)分開。
步驟 1:ToolAcre 故意使用 UTF-8 位元組模式,而不是在四種模式中進行選擇
工作簿標題建議選擇數字、字母數字、位元組或漢字模式的編碼器。此實作不會:它故意使用 TextEncoder 對每個有效負載進行預編碼,並以位元組模式透過 QR 庫傳遞這些 UTF-8 位元組。
此固定路徑可防止靜默依賴錯誤。否則,導入的 QR 庫會將 JavaScript 字元視為拉丁語-1 字節,因此咖啡館可以包含一個 E9 字節,而不是 UTF-8 對 C3 A9,而日文字符可能會折疊為不相關的資料。 ToolAcre 在呼叫庫之前進行區塊轉換,避免了對較大有效負載的參數計數限制,並避免了可能影響其他呼叫者的全域猴子補丁。
步驟 2:選擇版本和糾錯等級 - 文字長度和所選等級如何固定從 21×21 向上的網格大小
函式庫自動選擇適合所選校正等級位元組的最小 QR 版本。 ToolAcre 驗證有效矩陣是否以標準四模組步驟成長,從每側 21 模組一直到 177 的實作上限。
所選等級會變更可用位元組容量和有效負載所需的版本。該面板使用 TextEncoder 測量準備好的有效負載,將其與該等級配置的上限進行比較,並在預覽旁邊顯示兩個數字。如果函式庫無法容納該值,使用者會收到縮短該值或降低校正值的指令,而不是空預覽或默默缺少尾隨位元組的矩陣。
步驟3:QR庫內部新增糾錯資料; ToolAcre 公開所選級別
ToolAcre 公開 L、M、Q 和 H 作為選擇,但 Reed-Solomon 區塊構造存在於 qrcode-generator 依賴項中。有道理的說法是,正如測試所證明的那樣,選擇更強的水平可以為相同的內容產生更大的矩陣。
結構測試使該邊界可觀察,而無需聲明依賴項內數學的所有權。產生的矩陣必須具有相同長度的行和列,尺寸遵循 21、25、29 級數,以及暗邊框、亮環、暗中心取景器形狀。然後可以單獨診斷渲染器錯誤:如果布林矩陣通過但匯出失敗,則故障出在編碼之後,而不是在有效負載或校正資料中。
步驟 4:功能模式 — 查找器、分隔符號、計時和對齊模式以及格式資訊條
當函式庫返回其矩陣時,查找器模式、時序結構和其他保留區域已經存在。 ToolAcre 將該結果轉換為行主布林值,並測試三個 7-by-7 角點查找器,而不是重新實作這些結構本身。
應用程式仍然控制已驗證的矩陣如何到達檔案。 SVG 輸出將每行中的相鄰暗模組合併到路徑中,減少標記,同時保持相鄰邊緣精確。畫布輸出為每個暗單元繪製一個全像素矩形。兩條路徑都在矩陣周圍而不是內部添加了所選的安靜區域,因此更改邊距或顏色不能改變編碼的有效負載。
步驟 5:矩陣屏蔽在 QR 庫內部處理,而不是由 ToolAcre 程式碼選擇
遮罩選擇也屬於依賴項,因此本文不會假裝 ToolAcre 包含可見的八個候選評分循環。應用程式擁有的是穩定的矩陣介面和消耗其明暗模組的渲染路徑。
當偵錯外觀令您驚訝的程式碼時,該邊界很重要。 ToolAcre 無法暴露哪個依赖項的候選掩碼獲胜,也無法在界面中重現惩罚分數;它可以為相同的輸入重現最終的模塊數組。因此,比較數組是有意義的,同時將交替單元的特定補丁解釋為手動選擇的遮罩將超出此程式碼記錄的範圍。
工作範例:比較可觀察的 UTF-8 有效負載、矩陣大小和渲染模組
嘗試使用短選單 URL,記下傳回的模組計數,然後附加長查詢字串。可见的教训是,更多的 UTF-8 字節可能需要更密集的矩陣;该存儲庫不會公開用于手動計算的中間位字符串或代碼字。
為了進行有用的比較,請保持等級 M 和顏色恆定,然後生成`https://example.com/menu`以及具有長查詢值的相同位址。記錄面板顯示的位元組計數器和矩陣尺寸。即使兩者都是“一個 URL”,第二個輸入也可能跨越版本邊界。差異來自編碼字節,而不是字數或目標頁面的表觀長度。
重點:編碼是本地的,而頁面層級網路活動必須單獨評估
有效負載到矩陣操作由瀏覽器 JavaScript 執行,SVG 或 PNG 渲染使用該記憶體中矩陣。這比聲稱整個頁面是網路靜默的要窄:部署可能會載入不相關的頁面資源,因此在使用機密之前檢查請求。
狹隘的隱私權聲明也可以在不信任行銷文案的情況下進行測試。清除開發人員工具,輸入獨特的無害字串並產生程式碼,然後搜尋該字串的新請求 URL 和正文。編碼函數不包含提取調用,但測試仍應在已部署的頁面上執行,因為樣式、分析或擴展與此處審查的有效負載到矩陣實現是分開的。