QR Code 在近年越來越普遍,在文章 Excel VBA 產生 QRCode 與自動調整大小 裡利用到網路上的第三方服務,來產生 QR Code。用別人的服務,就是怕用太多被封鎖。好在要自己做到也不難,這篇文章就教你怎麼自己產生 QRCODE。
產生 QRCODE
在 Ubuntu 上需要兩個套件,imagemagick (圖型處理) 和 qrencode (產生 QRCODE)。
1 |
apt-get install imagemagick qrencode |
完整的程式碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/bash # Select font from 'convert -list font' font="AR-PL-UMing-TW" text=$1 url=$2 if [ "$text" = "" ];then text="QRCODE" fi if [ "$url" = "" ];then qrencode -o a.png -s 15 "$text" else qrencode -o a.png -s 15 "$url" fi convert a.png -gravity south -pointsize 20 -font "$font" -annotate +0+30 "$text" b.png if [ ! "$url" = "" ];then convert b.png -gravity south -pointsize 15 -font "$font" -annotate +0+10 "$url" b.png fi |
- 行 3 : 這個程式會產生一個 QRCODE圖型,並在下方有一個標題和網址。因為我們要產生的標題有中文字,需要在這指定字型。所有的字型列表可以用命令 convert -list font 來取得。
- 行 4, 5 : 程式需要兩個參數,一個是標題,第二個則是網址。
- 行 6~8 : 如果沒指定標題(沒任何參數),則以預設的定串 “QRCODE” 來當標題
- 行 10~14 : 如果有網址的話,則產生的QRCODE就連到網址。若是只有標題,則 QRCODE 會顯示標題。qrencode 是產生 QRCODE 的主要命令。其中 -o 是指定要存成的檔名,-s 是指定大小,最後再接上掃描後要顯示/聯結的文字。
- 行 15 : 利用convert工具在 QRCODE 圖型的下方中間,產生標題文字,字型大小是 20
- 行 16~18: 如果有網址的話,另外再產生網址。
最後的產生的範例如下 (範例命令: qrgen.sh 月半人的家 “https://moon-half.info”)
參數變化
qrencode 和 convert 都有一些參數可以調整,改變 QRCODE 大小或字的位置,說明如下。
qrencode
qrencode 有兩個比較重要的參數。-s 可以調整每一”點”的大小,這裡的”點”是指 QRCODE 構成的點。點越粗,圖當然就會越大。-m 參數則可以調整其留白 (margin),如此才可以放一些字進去。
qrencode 參數,s=15 和 s=30,點越粗,圖就越大。
qrencode 參數, m 越大旁邊的空白就越多。
convert
convert 是 imagemagick 套件內的圖形處理工具。我們可以利用它來附加新的文字,我們的例字內有用到的參數:
- gravity: 指定加文字時的基準點。south –> 下面中間, southwest –> 左下角。可以想像的到,有 north, northwest, northeast 之類的。
- pointsize: 插入的字型大小
- font: 指定字型名稱
- annotate: 文字相對於基準點的位置。前面一個數字是X軸, 後面是Y軸。
convert 不同 gravity 的效果 。gravity=southwest 預設會對齊在最左邊,以下範例是搭配 annotate,將其對齊在 QRCODE 的左邊界。
結語
在 Linux 上怎麼產生 QRCODE,不意外是小菜一碟。要取代網路上的 QRCODE 產生服務,只要搭配簡易的 web server + CGI 就可以達成了。
Latest Comments