你必須很努力

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

2021/09/25
字數統計: 347閱讀時間: 1 min

前言

前篇講解如何產二維條碼 QR Code,這篇則是示範如何解析(解碼) QR Code,類似工具有 ZBarZXing..等,本篇以 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 使用,有需要時,可以看哪個用比較上手~

參考資料

  1. ZBar GitHub
  2. ZXing GitHub

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

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

原文連結:https://riverye.com/2021/09/25/Day12-解析圖片中的-QR-Code-資料/

發表日期:2021-09-25

更新日期:2022-12-21

CATALOG
  1. 1. 前言
  2. 2. 說明
  3. 3. 實作
  4. 4. 範例 QR Code
  5. 5. 操作範例
  6. 6. 小結
  7. 7. 參考資料