看例子學 Shell Programming (5) – QRCode 產生器與文字添加

QR Code 在近年越來越普遍,在文章 Excel VBA 產生 QRCode 與自動調整大小 裡利用到網路上的第三方服務,來產生 QR Code。用別人的服務,就是怕用太多被封鎖。好在要自己做到也不難,這篇文章就教你怎麼自己產生 QRCODE。

 

產生 QRCODE

在 Ubuntu 上需要兩個套件,imagemagick (圖型處理) 和 qrencode (產生 QRCODE)。

完整的程式碼如下

 

  • 行 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 就可以達成了。

Leave a Reply