ホーム > PHP
PHPのアーカイブ
ZBar bar code readerを使って画像からバーコードを読み取ってPHPで表示してみるまで
「JPEGやGIF画像内のバーコードを読み取ってISBN情報を取得したい!」衝動にかられたので試してみました。
まずは画像からバーコードを取得する方法を探していると下記の物がヒットしました。
最近までZebra Barcode Readerという名称で愛されて来た様ですが名称が変わった様です。
バーコードスキャンの方法としてはかなり有名らしい。
まずは、上記のサイトにある「Download Now!」をクリックしてダウンロードします。

ダウンロードしたファイルを解凍します。
今ダウンロードしたのはZBarを動作させる為のプログラムソースファイルです。
これをゴニュゴニュして使える状態(Windowsで言う所のexeファイルを作成?)にします。

ソースファイルから作るのは初めてなのでもの凄くハマりました。
実際にはもっとスマートな方法があると思うのですが、初めてと言う事で大目に見てやってください。
言い訳はこのくらいにして、まずは「アプリケーション>ユーティリティ>ターミナル」を起動します。
実は、ZbarはImageMagickという他のライブラリが必要?なのでこれをインストールします。
ターミナルからMacPort経由でImageMagickをインストールします。
MacPortのインストールはここらへんを参考にしてセットアップしてください。
まずは、ImageMagickを下記のコマンドで検索します。
1 | port search ImageMagick |
検索結果からImageMagickを探します。2009/11/27現在のバージョンは@6.5.7-0となっているのでこれをインストールします。
パスワードを入力するとインストールが始まるので少し待ちます。
1 | sudo port install ImageMagick @6.5.7-0 |
次に先ほど解凍したzbarフォルダに下記のコマンドで移動します。
1 | cd ~/Downloads/zbar-0.10 |
Zbarのインストールに必要なMakeFileを作ります。なんでもコンパイルやインストールをするにはmakeというコマンドを使用する様ですが、その為に依存関係やルールなどが記述されたMakeFileが必要です。で、そのMakeFileを作る前に正常にコンパイルできるかチェックする為のコマンド「configure」を実行しないといけないらしい。。。
今回は下記のコマンドでconfigureを実行しました。ZbarはWebCamなどからバーコードを読み込む事も出来る様ですが、今回は静的画像からのみに限定して、各種必要の無い物?をcofigureのオプション設定で外しています。
全部インストールしても良いのですが、色々と足りない(依存関係にあるライブラリ?)と怒られるのでそれらを全部外しました。大丈夫か???
configureがウマくできない場合にはerrorなどのメッセージが表示されるのでそれらを確認しつつオプションを変更するか足りないものを先にインストールする事になります。
1 | ./configure --with-x=no --without-gtk --without-qt --disable-video --without-python --without-xshm --without-xv |
そして、ソースファイルをコンパイルする為にmakeコマンドを実行します。
コンパイルが終わるまでしばらく待ちます。
1 | make |
次にインストールする為にmake installのコマンドを実行します。
管理者権限で実行するとパスワード入力を求められるので、入力してインストールを開始します。
1 | sudo make install |
これでターミナルからZbarが使用できるようになったはずです。
Zbarのzbarimgというコマンドで画像からバーコードを読み込んでみます。
Googleの画像検索などで、「ISBN」などで検索して適当なバーコード画像をローカルにダウンロードします。
ターミナルから「zbarimg バーコード画像」という風にコマンドを入力して実行します。
1 | zbarimg ISBN.gif |
コマンドの実行結果としてターミナルにバーコードの数字が表示されたらZbar bar code readerのインストールは成功です。
1 | EAN-13:9780747595823 |
次にPHPに読み込んだバーコードを表示します。
PHPのソースファイルは下記の用に記述しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php echo "ISBNコードを出力する"; $jan = null; $command = "/usr/local/bin/zbarimg -q ISBN.gif"; exec($command, $jan); echo "<p>".$jan[0]."</p>\n"; ?> </body> |
読み込む画像はPHPファイルと同一の階層に配置しました。
zbarimgをコマンドから使うときはフルパスではなくても実行できましたが、PHPから実行するときにはフルパスで指定しないと動作しませんでした。きっとPHPから実行する時にはターミナルとは異なるユーザーから。。。また調べておきます。
また、初めてexecなるPHPのコマンドを使用しましたが、実際に使う場面を想定すると画像ファイル名は動的に生成する事となります。その場合にファイル名を「escapeshellcmd」でエスケープ処理をしないとコマンドが乗っ取られるらしい。気をつけよう。
という事でかなりはまりましたが、少しだけ成長できたのでした。
特に今回は下記のサイトを参考にさせていただきました。感謝感謝。勿論、Zbar bar code readerというライブラリを提供してくれている開発者にも感謝しつつ終わりにしたいと思います。
参考サイト
PHPでバーコード解析
WindowsにPHPの開発環境を作る ~PHPをインストールする~
今度はPHPが動くように設定していきます。
いつもの様に 「アプリケーション>アクセサリ>GNOME端末」をクリックします。

管理者権限が必要なので「su」と入力してパスワードを入力します。
「yum -y install php php-mbstring」と入力してEnterを押下するとPHPのインストールが始まります。ちなみにインストールされるのはPHP5です。

PHPが動作するか確認します。「vi /var/www/html/index.php」と入力してEnterを押下します。
index.phpファイルに「<?php phpinfo(); ?>」を記述して「:wq」で保存して終了します。

後はブラウザで「http://localhost/index.php」にアクセスすると下記の様にPHPの情報が表示されれば正常にPHPが動作しています。

WindowsにPHPの開発環境を作る ~Webサーバー(Apache)をインストールする~
さて今度はWebサーバー(Apache)のインストールを行います。
まずは 「アプリケーション>アクセサリ>GNOME端末」をクリックします。

管理者権限が必要なので「su」と入力してパスワードを入力します。
yumを使ってApacheのインストールを行います。「yum -y install httpd」と入力してEnterを押下するとApacheのインストールが開始されます。が、既にApacheがインストールされていました。

次にWebサーバー(Apche)を起動します。「/etc/rc.d/init.d/httpd start」と入力してEnterを押下するとWebサーバーが起動されます。「OK」と表示されれば正常に起動されています。
Webサーバーが正常に起動されていることを確認します。上部のメニューバーにある地球とマウスのアイコンをクリックします。するとWebブラウザ(Firefox)が起動されます。ブラウザのアドレスバーに「http://localhost/」と入力してEnterを押下するとApacheのテストページが表示されます。これでWebサーバーが正常に動作していることを確認できました。
このままではCentOSを起動する度にWebサーバーを起動しないといけないので、Webサーバーが自動起動するように設定します。
GNOME画面に戻って「/sbin/chkconfig httpd on」と入力してEnterを押下します。

ちなみにWebサーバーのドキュメントルートはデフォルトで「/var/www/html/」となります。GNOME画面などで「echo Hello world >> /var/www/html/index.html」と入力してブラウザで「http://localhost/」にアクセスすると「Hello world」と表示されます。
これでWebサーバーまで準備できたので後はPHPが動作するようにするだけです。それは次回に。
ホーム > PHP
- 検索
- フィード
- メタ情報

