全面解读Linux环境中PHP7识别二维码(zbarcode)

2024-08-29 00:58

本文主要是介绍全面解读Linux环境中PHP7识别二维码(zbarcode),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PHP识别二维码或条形码需要 3 个工具。

  1. ImageMagick
    ImageMagick 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过 100 种图象格式。ImageMagick 以 ImageMagick 许可证(一个类似 BSD 的许可证)发布。
  2. zbar
    zbar 是一个开源软件套件,用于读取各种来源的条形码,如视频流,图像文件和原始强度传感器。它支持 包括 EAN-13 / UPC-A,UPC-E,EAN-8,Code 128,Code 39,Interleaved 2 of 5 和 QR Code 等多种流行的条码。
  3. php-zbarcode
    php-zbarcode 是 PHP 读取条形码的扩展模块,目前仅支持 php5.x。使用这个模块之前还需要安装 ImageMagick 和 zbar 这两个命令行套件。
    phpzbarcode 依赖于 ImageMagick 和 zbar,zbar 依赖于 ImageMagick,ImageMagick 依赖 jpeg 库来提供 jpeg 图片支持,所以先安装 jpeg 支持。

安装 jpeg 库

//yum安装
#yum install libjpeg
#yum install libjpeg-devel
#yum install libpng
#yum install libpng-devel
#yum install libtiff
#yum install libtiff-devel
#yum install libungif
#yum install libungif-devel
#yum install freetype
#yum install zlib
#pm -qa |grep libjpeg
//二进制安装
#wget http://www.imagemagick.org/download/delegates/jpegsrc.v9b.tar.gz
#tar xf jpegsrc.v9b.tar.gz
#cd jpeg-9b/
#./configure 
#make libdir=/usr/lib64   
#make libdir=/usr/lib64 install  
#rpm -qa |grep libjpeg

安装 ImageMagick

#wget https://www.imagemagick.org/download/ImageMagick.tar.gz
#tar xf ImageMagick.tar.gz
#cd ImageMagick-7.0.7-13
#./configure
#make
#sudo make install
#sudo ldconfig /usr/local/lib
#magick --version

********************************************* 常见错误 *******************************************
出错1:安装好以后使用 magick 、 convert 等相关命令时,加载动态链接库出错
解决方法:设置动态加载动态链接库
sudo ldconfig /usr/local/lib

安装 zbar
下载地址:https://sourceforge.net/projects/zbar/files/zbar/。我下载的最新版 0.10,包名为 zbar-0.10.tar.gz 。

#tar xf zbar-0.10.tar.gz
#cd zbar-0.10/
#sudo ln -s /usr/local/include/ImageMagick-7 /usr/local/include/ImageMagick
#sudo ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand
#./configure --disable-video --without-gtk --without-qt --without-python
#make
#make
#sudo make install
#zbarimg --version

********************************************* 常见错误 ********************************************
出错1:找不到 MagickWand.h 头文件

ImageMagick package found but wand/MagickWand.h not installed?!
-this is a problem with your ImageMagick install,
-please resolve the inconsistency and try again...

解决方法:zbar 的配置文件 ./configure 在运行时会找不到 MagickWand.h,它在 /usr/local/include/ImageMagick-7/MagickWand 目录下,但是 ./configure 执行时会去 wand/ 目录找(找不到),所以需要做两个软连接让 ./configure 能找到 MagickWand.h 文件

#sudo ln -s /usr/local/include/ImageMagick-7 /usr/local/include/ImageMagick
#sudo ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand

出错2:configure: error: Unable to find ImageMagick >= 6.2.6:No package ‘MagickWand’ found
这个错误的原因是cmake找不到imagemagick库,因为你通过apt-get或者yum安装的仅仅是imagemagick,而不包括magickwand的开发包。
解决方案有两个,第一种很简单:
找到libmagickwand-dev这个包进行安装,比如在ubuntu中可以使用以下命令

#sudo apt-get install libmagickwand-dev

如果是centOS的话可能需要自己查找一下类似的包,或者使用方案二。

#sudo yum install ImageMagick-devel

安装对应版本的php-zbarcode扩展,主要看你安装php的版本哟

#wget https://github.com/mkoppanen/php-zbarcode/archive/master.zip
#unzip master.zip
#cd php-zbarcode-master/
#phpize
#./configure --with-php-config=/usr/bin/php-config
#make
#sudo make install

成功后会提示安装到的模块目录

Installing shared extensions:     /usr/lib/php/20131226/

编辑 /etc/php/5.6/apache2/php.ini 文件

sudo vim /etc/php/5.6/apache2/php.ini

最后添加一行

extension=zbarcode.so

重启 apache

sudo /etc/init.d/apache2 restart

这就好了,可以使用条形码扩展了。
注意 php -m 命令显示的是 php-cli 模式启用的扩展,要让 php-cli 模式也启用扩展的话,需要再编辑 cli 模式的配置文件。然后就能使用 php -m 命令看到 zbarcode 模块了。


参考一下他人的劳动成果
WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
Linux安装ImageMagick与JMagick完成过程及配置
Cmake时报错:Could NOT find ImageMagick
Centos 6.x 上安装php 的 zbarcode 扩展
ImageMagick简明安装部署手册

这篇关于全面解读Linux环境中PHP7识别二维码(zbarcode)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116392

相关文章

对Django中时区的解读

《对Django中时区的解读》:本文主要介绍对Django中时区的解读方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景前端数据库中存储接口返回AI的解释问题:这样设置的作用答案获取当前时间(自动带时区)转换为北京时间显示总结背景设置时区为北京时间 TIM

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Java中的内部类和常用类用法解读

《Java中的内部类和常用类用法解读》:本文主要介绍Java中的内部类和常用类用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录内部类和常用类内部类成员内部类静态内部类局部内部类匿名内部类常用类Object类包装类String类StringBuffer和Stri

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构