iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
自我挑戰組

Ruby on Rails 與它們相關的東西 II系列 第 12

Day12 - 解析圖片中的 QR Code 資料

前言

前篇講解如何產二維條碼 QR Code,這篇則是示範如何解析(解碼) QR Code,類似工具有 ZBarZXing..等,本篇以 ZBar 做示範

說明

情境說明,打 API 取回的圖片、PDF 中,有包含 QR Code,需要解析 QR Code 的訊息內容 (這邊不示範如何截圖指定位置,可用 RMagick 處理)

實作

需要安裝 zbar,也可以用 zbar Gem,這邊以 Homebrew 安裝為例

# for macOS
brew install zbar

先產一個 QR Code 的圖片檔,接著再用 zbar 來解析(編碼)

# 產一個 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 使用,有需要時,可以看哪個用比較上手~

參考資料

  1. ZBar GitHub
  2. ZXing GitHub

鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10264602
medium 文章連結:https://link.medium.com/MDSrOdpGOjb
本文同步發布於 小菜的 Blog https://riverye.com/

備註:之後文章修改更新,以個人部落格為主


上一篇
Day11 - Gem-rqrcode 或 barby 產 QR Code
下一篇
Day13 - PDF 加密、解密的處理
系列文
Ruby on Rails 與它們相關的東西 II30

尚未有邦友留言

立即登入留言