
批次 QR Code 產生器實際上是什麼
批次 QR Code 產生器是一種工具,可在單一瀏覽器端操作中編碼最多 20 個不重複的 QR Code PNG,每行輸入對應產生一張圖片,以便個別掃描、驗證並儲存。以這種方式建構的批次 QR Code 產生器接受純文字或 URL(每行一個),於本機執行 QR 編碼器,並為每個產生的 PNG 提供個別下載連結,而不會將它們合併成單一封存檔。
這個名稱中的「批次」一詞並不代表無限。瀏覽器分頁就是整個執行環境:編碼器、渲染器以及暫存的 PNG data URL,全部都存放在記憶體中,直到你關閉分頁為止。這種單一分頁的模型正是讓小型、可預測的批次作業得以可行的關鍵。它也說明了為什麼會存在一個嚴格的上限(本例中為每批 20 行不重複內容),以及每行的字元上限。若沒有限制,一份很長的清單可能會在繪製任何 PNG 之前,就耗盡一般手機或筆電的 CPU 與版面配置記憶體。
在這個範圍內,工作流程簡短且明確。你貼上清單,選擇像素大小與容錯等級,點擊產生,頁面就會為每一行通過驗證的內容繪製預覽圖。每張預覽圖都有自己專屬的檔名與下載連結,因此你可以挑選真正需要的符號,而不會收到一個還得自行解開的單一巨大檔案。內容不會被上傳、縮短或追蹤:編碼器不會聯繫伺服器,頁面也不會記錄你的輸入資料。
瀏覽器中的編碼流程如何運作
每一行通過驗證的內容都會走相同的流程。首先,解析器會去除每行前後的空白字元,並移除空白項目。接著它會合併完全重複的內容,保留第一次出現的項目,捨棄後續的重複,因此同一個 URL 貼兩次只會變成一個符號,而不是同一張 PNG 出現兩次。剩下的是一份不重複、已去除空白、長度上限為 20 行的清單,每行不超過 2,000 個 JavaScript 字元。
QR 編碼本身會交由專案中已隨附的程式庫 qrcode 1.5.4 處理,這與單張 QR Code 產生器工具所使用的套件相同。由於在用戶端執行,程式庫接收文字後,會選擇最佳的編碼區段(數字、英數字或位元組模式)、繪製模組方格、套用所要求的容錯等級,並回傳 PNG data URL。由於批次工具沒有第二個編碼器,因此不存在兩個 QR 實作出現分歧或在容量表上不一致的風險。
檔名是固定的。像是 https://example.com 這樣的 URL,第一行會變成 01-example-com.png,第二行變成 02-...,以此類推。如果某行內容不含任何 ASCII 字母或數字,檔名主體會 fallback 為 qr-code。這些名稱只是便利性標籤:它們不會改變編碼內容,但確實能讓你輕鬆對應印刷用的庫存標籤或活動識別證與正確的原始列。
批次作業會以一個非同步任務識別碼包裹起來。如果你在產生後編輯輸入內容或變更大小與容錯選項,先前的結果會失效,使得正在進行中的舊批次無法覆蓋較新的設定。這正是防止「最後點擊的預覽圖被舊的渲染結果取代」的機制。
像素大小與資料容量:兩件不同的事
像素大小控制的是渲染後 PNG 在顯示或列印時的外觀,而不是符號能承載多少資料。編碼器提供 128、256 或 512 像素作為 PNG 畫布的選項。選擇較大的數值會產生密度更高的影像,在放大列印、張貼於招牌上或顯示於高解析度螢幕時會更耐用。但它並不會讓 QR 符號有更多空間容納文字。
容量上限是由程式庫內部所選的 QR Code 版本、所選的容錯等級,以及程式庫為內容選擇的編碼模式所決定。較大的像素只是把相同的模組分散到更多的影像點上。實用的原則是:挑選在你打算列印或顯示的最大實際尺寸下仍能乾淨掃描的最小像素大小,並在裁切、重新上色或擺放 PNG 時,保留完整的靜默區(圍繞符號周圍建議留白的邊界)。
容錯等級:還原能力與密度的取捨
容錯預設並不會讓 QR Code 變得更容易讀取;它是在部分內容缺失或毀損時,讓符號仍可被還原。程式庫支援四個等級,傳統上標示為 L、M、Q 與 H,根據 DENSO WAVE 公布的近似還原率分別為 7%、15%、25% 與 30% 的碼字。每往上一級,會以較少的可用位元組換取更高的強韌性,這通常會迫使編碼器採用更高的 QR 版本,模組更多,因此符號密度也更高。
| 等級 | 近似碼字還原率 | 實際取捨 |
|---|---|---|
| L | 7% | 最大內容空間;僅能接受乾淨、未受損的符號。 |
| M | 15% | 一般室內顯示與列印的常見預設值。 |
| Q | 25% | 適用於符號上有標誌或小型遮罩的情況。 |
| H | 30% | 戶外、工業環境或部分被遮蔽的擺放位置。 |
對大多數日常顯示條件來說,M 等級是實際的預設選擇。只有當你預期符號會被刮傷、弄髒或部分遮蓋時,才選擇更高的等級。根據DENSO WAVE 的 QR Code 容錯參考資料,上述百分比描述的是 QR 規格下的碼字還原率,而非在各種相機與光照組合下的絕對掃描成功率。
如何產生一批 QR Code
- 將每行一個文字或 URL 貼入輸入區,最多 20 行不重複內容,且每行不超過 2,000 字元。
- 從可用控制項中選擇 PNG 像素大小(128、256 或 512)與容錯等級(L、M、Q 或 H)。
- 點選「產生」按鈕,等待預覽方格填入。頁面會在單一任務識別碼下,以一批作業渲染每一行通過驗證的內容。
- 使用你預定在實際環境中使用的裝置與應用程式掃描每張預覽圖,並逐字元確認解碼後的內容。
- 使用每張預覽圖上的下載連結,逐一儲存已驗證的 PNG,並保持影像周圍的靜默區完整。
為什麼這個工具一次只下載一張 PNG
這個頁面不會將整批內容打包成 ZIP 封存檔。這是刻意的選擇:專案刻意避免為了封存作業而新增 npm 依賴,而且每個在本機產生的 PNG 都已經有明確的個別下載連結。單一的「下載 ZIP」按鈕也會模糊掉你實際保留下來的符號,因為封存檔會包含所有預覽圖,不論你是否已驗證過。
瀏覽器政策可能會要求每個檔案各自點擊一次,或在短時間內大量觸發下載時跳出權限提示,這也是產生器不會一次啟動 20 個自動下載的另一個原因。逐一儲存每張預覽圖能讓操作保持明確:你看到符號、驗證它、儲存它。
決定批次是否成功的限制
三項限制會交互作用,決定批次會完成或失敗。20 行不重複上限限制了頁面在單一作業中能配置並渲染的符號數量,使 CPU 與記憶體維持在一般手機或筆電所能負擔的範圍內。每行 2,000 字元的上限限制了編碼內容,確保每次對編碼器的呼叫都能落在所選容錯等級下 QR 規格的版本限制之內。完全去重規則限制了你實際看到的預覽數量:同一行貼兩次會合併為一個符號。
如果某個內容在所選的容錯等級下超出 QR 容量,批次會顯示錯誤,而不是呈現一個看似完整的部分結果。變更輸入或選項會使先前的批次失效,因此編輯輸入或選項會對通過驗證的行重新產生一次全新的渲染。
發布前逐一驗證每個符號
渲染出來的 PNG 並不能證明每台掃描器都能讀取到預期的內容。長篇 UTF-8 文字、表情符號、列印尺寸、對比、相機對焦、螢幕反光、物理損壞以及讀取應用程式的行為,都會影響掃描成功率。程式庫註明尚未實作完整的 ECI(Extended Channel Interpretation,延伸通道解譯)支援,這代表部分非 ASCII 內容在期待明確 ECI 旗標的掃描器上可能會有不同的解碼結果。
在發布、列印、庫存標示、活動資料發送或取代現有條碼之前,務必使用實際的裝置與應用程式掃描每一張最終的 PNG。逐字元比對解碼後的內容。請勿將未經驗證的 QR Code 用於付款、驗證密鑰、安全指示,或任何不可逆的動作。
延伸閱讀:Windows 上的批次 URL 產生器:建立並匯出清單。
延伸閱讀:Email 混淆器完整說明:用途、方法與限制。