PHP识别图形中的条形码

需求

相机拍摄快递单图片,识别图片中的条形码。

服务器环境

操作系统:CentOS 7+
PHP版本:PHP 7+

安装步骤

  1. 安装依赖的软件:ImageMagick和zbar

    yum -y install ImageMagick ImageMagick-devel zbar zbar-devel
    
  2. 安装php-zbarcode

    默认的版本在 https://github.com/mkoppanen/php-zbarcode , 但是这个版本不支持PHP7,直接点击fork版本,在fork的历史记录里面我们找到支持PHP7的版本,她的版本地址是: https://github.com/dirkwinkhaus/php-zbarcode

    考虑到github有时候上不去,可以从以下网址下载(只支持php7):

    http://git.delznet.com/sheawey/php-zbarcode

    编译安装

    phpize
    ./configure
    make && make install
    

    编译好后获取到zbarcode.so,将extension=zbarcode.so放入php.ini或者php配置目录etc/php.d/zbarcode.ini(这个看PHP的安装配置而定)。

    输入php -m命令看php是否正确加载了zbarcode模块,如正确,则重启php-fpm。

代码测试

创建一个zbarcode_test.php的文件,内容如下:

<?php
	
$image = new ZBarCodeImage("test.jpg");

/* Create a barcode scanner */
$scanner = new ZBarCodeScanner();

/* Scan the image */
$barcode = $scanner->scan($image);

/* Loop through possible barcodes */
if (!empty($barcode)) {
    foreach ($barcode as $code) {
       printf("Found type %s barcode with data %s\n", $code['type'], $code['data']);
    }
}

相应目录放入一张test.jpg的快递单图片。

在命令行输入

php zbarcode_test.php

如果识别成功,说明安装正确。