RubyでZBarを使ってQRコードを読み込んでみる手順です。簡単に手順だけまとめます。
環境
CentOS7 に ruby 2.6.3
やったこと
修正版 ZBar のダウンロード
ZBar の CentOS7 や Ubuntu 等で標準で配られているパッケージには、jpeg の処理がおかしくなるというバグがあります。なので、これに対する修正が入ったものを github から落としてきてコンパイルします。以下の URL で配られています。
https://github.com/shey/zbar-patched
もし、すでにパッケージ版を入れているようであれば、削除しておきます。
コンパイル
粛々と configure と make, make install。ImageMagick の開発環境はインストールしておかないとコンパイルできません。あと、今回は gtk 周りとかそのへん一切コンパイルしませんでした。
1 2 3 |
$ ./configure --with-x=no --without-gtk --without-qt --disable-video --without-python --without-xshm --without-xv $ make $ sudo make install |
gem のインストール
1 |
gem install 'zbar' |
使ってみる
単純に QR コードが書かれている jpeg ファイルを読んで、中のテキスト吐き出すには以下のような感じ。
process したあとの返り値は、Array クラスであることに注意。
1 2 3 4 5 6 7 8 |
require 'zbar' jpeg = File.binread(ARGV[0]) z = ZBar::Image.from_jpeg(jpeg) r = z.process r.each do |moge| puts moge.data end |