前言
前篇講解如何產二維條碼 QR Code,這篇則是示範如何解析(解碼) QR Code,類似工具有 ZBar、ZXing..等,本篇以 ZBar 做示範
說明
情境說明,打 API 取回的圖片、PDF 中,有包含 QR Code,需要解析 QR Code 的訊息內容 (這邊不示範如何截圖指定位置,可用 RMagick 處理)
實作
需要安裝 zbar
,也可以用 zbar Gem,這邊以 Homebrew 安裝為例
1
2# for macOS
brew install zbar
先產一個 QR Code 的圖片檔,接著再用 zbar
來解析(編碼)
1
2
3
4
5
6
7
8
9
10
11
12# 產一個 qr_code.png
qrcode = RQRCode::QRCode.new("https://riverye.com/")
png = qrcode.as_png(size: 300, border_modules: 2, module_px_size: 2)
qrcode_path = Rails.root.join("qrcode.png")
IO.binwrite(qrcode_path, png.to_s)
# ---
# 解碼 qrcode.png
qrcode_path = Rails.root.join("qrcode.png")
decoded_qrcode = `zbarimg #{qrcode_path}` # "QR-Code:https://riverye.com/\n"
result = decoded_qrcode.gsub("QR-Code:", "").gsub("/\n", "") # "https://riverye.com"
範例 QR Code
操作範例
小結
最初是使用 zxing_cpp Gem 處理,也能解決問題,但總下載次數與熱門 Gem 動輒數百萬、數千萬次數相比,算是比較冷門的 Gem。
ZBar 與 ZXing 都能找到類似的 Gem 使用,有需要時,可以看哪個用比較上手~
參考資料
鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10264602
medium 文章連結:https://link.medium.com/MDSrOdpGOjb
本文同步發布於 小菜的 Blog https://riverye.com/
備註:之後文章修改更新,以個人部落格為主