abox.tools

語言: 繁體中文

怎麼做一個到了別人手機上還掃得出來的 QR Code

做個 QR Code 是一秒鐘的事。做一個在溼漉漉的選單上、在公交站牌上、在昏暗光線下一臂之外還掃得出來的 QR Code,得先定四件事,而且四件都在開印之前。下面講的就是每一件到底管什麼。

開啟QR Code 與條碼產生 打進去,就變成一個碼。產生過程不往外送任何東西。

以 Markdown 檢視

先說結論

開啟 QR Code 與條碼產生,把連結貼進去,等級保持 M,留白保持 4,下載那個 SVG。印出來至少兩釐米寬,用啞光材質,深色在淺色上。訂一千份之前,先拿一部不是你自己的手機,掃一下印出來的那張。

絕大多數情況到這裡就完了。這一頁剩下的部分是給例外準備的:要經得起反覆摸的碼、中間要放 logo 的碼、要貼在很小的東西上的碼,還有一個特別容易做錯、又得等上一年才發現的決定。

QR Code 裡到底裝著什麼

一串字元,就這麼點東西。掃一個 QR Code,等於把一段文字遞給手機。之後開啟網頁也好,連上網路也好,問你要不要存聯絡人也好,都是手機認出了這段文字的樣子,然後主動提議照著辦。

所以根本沒有「Wi-Fi QR Code」這麼一個碼種。有的只是一個普通 QR Code,裡面裝著 WIFI:T:WPA;S:My Network;P:the password;;,而近十年出的手機都認得它。產生器把拼好的那串字元擺出來給你看,正是為了這個:碼沒做出你以為它會做的事時,值得看的只有那串字元。

這也意味著,QR Code 一旦印出來就改不了,不會往家裡打電話,也不會過期。除非有人往裡面塞了一個指向他們自己伺服器的連結,而那正是本頁最後一節要說的事。

一枚做好的 QR Code,下面是它的資訊:碼制、版本、糾錯等級和容納的字元數。
碼裡有什麼,用這篇指南後面會用到的說法講了一遍。版本隨內容一起變大,下面那兩個設定之所以重要,正是因為這一點。

第一件事:糾錯等級

QR Code 在資料旁邊還帶著一組校驗碼字,演算法讓讀取器能把沒看清的部分重建出來。一個缺了角的碼還能掃出來,靠的就是它。校驗碼字放多少,就是等級,一共四檔:

糾錯多不是白來的。校驗資料要擠在同一個方塊裡,所以同樣一段文字,H 級的碼比 L 級更大也更密。粗略地說,從 L 換到 H,同一串字元的模組數會翻一倍,而模組越密,鏡頭越難分辨。這裡有一筆實實在在的取捨,怎麼選,看這個碼要去哪裡。

L 給螢幕用:投影片裡、郵件裡、網頁上的碼。沒什麼東西會去損壞它,而每多一個模組,隔遠了就更難讀。

M 是預設值,也是大多數印刷品的正確答案。會被人拿在手裡翻兩下的紙、傳單、名片。

Q 和 H 留給會被折騰的碼:每天要擦一遍的選單、貼在車間機器上的標籤、板條箱上的標貼、曬得到太陽的櫥窗裡的碼。中間能放 logo,也得靠 H,下面還會講。

QR Code 選項:糾錯等級選單設在中等,靜區為四個模組。
兩者都關乎這枚碼能否在現實世界裡活下來,一道摺痕、一個標誌、一次糟糕的印刷,而且兩者都在繪製之前就定好了。

第二件事:留白,它是碼的一部分

QR Code 周圍那圈白,不是內邊距,也不是設計選擇。讀取器靠它判斷這個圖形到哪裡為止。規範要求四邊各留四個模組的靜區,而一個被裁到邊的碼,是印出來的碼失靈最常見的單一原因。

這話值得說得直白些,因為裁掉它實在太順手了。碼看起來周圍白得太多,於是在版式裡被裁了一刀,或者被扔到一塊一直鋪到方塊邊上的彩色底上,或者乾脆放到一張照片上。這幾種做法,每一種都把讀取器本來要用的那條邊界拿走了。

連著留白顯得太大,那就把碼做小。別動那圈留白。

第三件事:印多大

經得起現實檢驗的那條經驗法則是一比十:碼的寬度,大約要有掃描距離的十分之一。

兩釐米是底線,不是目標。小到 1.5 釐米以下,印得再好,普通手機也開始吃力,因為單個模組的尺寸已經逼近它鏡頭裡一個畫素了。

文字少,模組就少;模組少,同樣的印刷尺寸就能在更遠處讀出來。所以碼該指向 example.com/x,而不是一個末尾掛著一百個字元跟蹤引數的網址。

另外,印刷請用 SVG。QR Code 是由邊緣構成的,而 PNG 只有固定數量的畫素來拼這些邊緣,放大之後每條邊都發虛,而發虛恰恰是掃描器最頭疼的。SVG 是以指令表達的方塊,印在名片上和印在廣告牌上一樣銳利。

顏色、對比度,以及常見的兩個錯

讀取器量的是深色模組和淺色模組之間的差別,所以對比度就是全部。有兩件事經常出錯:

深底上的淺色碼。看起來是很搶眼,可相當多的讀取器直接不認:它們找的是淺底深圖,不會去試反相。有些會試。而你的客戶手上是哪一種,你根本不知道。

差別不夠大。白底中灰,或者兩個分量相近的品牌色,在螢幕上量著沒問題,一旦印上紙,油墨擴散加上手機的自動曝光,就失靈了。真要給碼上色,就讓深的那部分深得夠真。

凡是會在燈下被掃的東西,啞光勝過亮面,而這兩者又都勝過印在一張照片上。要把碼放到彩色底上,透明背景很好用,但記得看清最後墊在它後面的到底是什麼,深底上的透明碼,無非是上面那第一個錯多繞了幾道。

中間放一個 logo

這行得通,而且靠的正是糾錯,不是繞開糾錯。H 級下大約 30% 的模組被毀掉,碼依然讀得出來,所以一個蓋住比這少一些、又正好落在中間那塊沒有定點陣圖形的地方的 logo,屬於讀取器修得回來的損傷。

有三點得守住。用 H 級。logo 控制在面積的五分之一以內,離理論上限留出一大截,因為吃掉你餘量的不只印刷這一件事。還有,四角那三個大方塊和它們附近那些小的,絕對不能蓋:讀取器一上來就是靠它們找到這個圖形、確定方向的,再多的糾錯也重建不出來。

然後拿真手機測。加了 logo,一個碼就從「總是能用」變成了「在這麼多餘量下能用」,而想知道還剩多少餘量,只能去試。

最容易讓人後悔的那個決定:靜態還是「動態」

搜 QR Code 產生器,出來的結果大半想讓你註冊個帳號,因為他們賣的是動態碼。動態碼裡裝的不是你的連結,是一個指向產生方自己伺服器的短連結,再由那邊跳到你這裡。

它換來的東西是真的:印出來之後你還能改這個碼指向哪裡,而且每一次掃描都有計數。印量六位數的推廣活動,這錢花得值。

它的代價也是真的,而且值得事前知道,別等事後:

折中辦法一分錢都不用花:用你自己域名上的一個短網址做靜態 QR Code,跳轉由你自己來做。改目的地的能力還在,統計資料也還在,而這個碼的任何一部分,都不取決於一家你素未謀面的公司明年還在不在。

這裡的產生器只做靜態碼,也沒有帳號可註冊。你打進去什麼,碼裡就裝什麼。

印一千份之前

掃一下這個碼。別掃螢幕上那個,掃印出來的打樣,在它將要待的那個地方,用一部不是你做它時用的手機。這要花一分鐘,卻能一網打盡這一整頁講的所有毛病:被版式吃掉的留白、漏了 https:// 的連結、在紙上量出來完全不同的顏色、在桌上管用、上了牆就不管用的印刷尺寸。

還要看掃完之後會發生什麼。掃出來是掃出來了,可開啟的頁面在手機上根本沒法讀,那也是個失敗的碼。

這些事一樣都不用上傳

QR Code 就是對一串字元做算術。沒有檔案要送,也沒有哪件事是伺服器能做而瀏覽器做不了的,所以這裡的工具全都在你自己的機器上完成,拔了網線照樣能用。

這一點比聽起來要緊,因為人們往 QR Code 裡塞的是什麼東西。Wi-Fi 那個格式最常見的用途,就是把一個網路的真實密碼打進一個網頁裡。那個頁面有沒有地方可以把它送出去,值得先弄清楚。