CentOS 7 安装条码识别工具 zbar

news/2025/11/5 15:47:22/文章来源:https://www.cnblogs.com/79524795-Tian/p/19193861

终端命令

sudo yum install -y epel-release
sudo yum --enablerepo=epel install -y zbar
which zbarimg && zbarimg --version

php代码案例 从图片上传过来 到识别一维码

<?php
//  /shopapi/upload.php
// 作用:上传图片 -> 读取面单条码(优先 Code128) -> 返回单号 ->(可选)入库/* ====== CORS ====== */
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }/* ====== 仅 POST ====== */
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {http_response_code(405);header('Content-Type: application/json; charset=utf-8');echo json_encode(['code'=>405, 'msg'=>'Method Not Allowed'], JSON_UNESCAPED_UNICODE);exit;
}/* ====== JSON 输出工具 ====== */
header('Content-Type: application/json; charset=utf-8');
function j($arr, int $code = 200){http_response_code($code);echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);exit;
}/* ====== 可选:数据库配置(想入库就填) ====== */
$DB_DSN  = ''; // 例:'mysql:host=127.0.0.1;dbname=shop;charset=utf8mb4'
$DB_USER = '';
$DB_PASS = '';
$SAVE_DB = $DB_DSN !== '';/* ====== 工具:拼接当前域名 ====== */
function current_base_url(): string {$isHttps = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||(isset($_SERVER['SERVER_PORT']) && (int)$_SERVER['SERVER_PORT'] === 443) ||(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https');$scheme = $isHttps ? 'https' : 'http';$host   = $_SERVER['HTTP_HOST'] ?? 'localhost';return $scheme . '://' . $host;
}/* ====== 条码识别函数(优先 Code128,失败再开常见制式) ====== */
function readWaybillFromImage(string $imgPath): ?string {$bin = '/usr/bin/zbarimg';if (!is_file($imgPath)) return null;// 1) 只开 Code128,最快最稳$cmd1 = sprintf('%s --raw --set "*.enable=0" --set "code128.enable=1" %s 2>/dev/null',$bin, escapeshellarg($imgPath));$out = trim(shell_exec($cmd1) ?? '');// 2) 读不到,再开常见的一些(部分快递会用 i25/ean13)if ($out === '') {$cmd2 = sprintf('%s --raw --set "*.enable=0" --set "code128.enable=1" --set "i25.enable=1" --set "ean13.enable=1" %s 2>/dev/null',$bin, escapeshellarg($imgPath));$out = trim(shell_exec($cmd2) ?? '');}if ($out) {// 取 10~18 位数字,且排除 11 位手机号if (preg_match_all('/(?<!\d)(\d{10,18})(?!\d)/', $out, $m)) {foreach ($m[1] as $n) {if (!preg_match('/^1[3-9]\d{9}$/', $n)) return $n;}}}return null;
}/* ====== 接收上传 ====== */
if (empty($_FILES['file']) || $_FILES['file']['error'] !== UPLOAD_ERR_OK) {$err = $_FILES['file']['error'] ?? -1;$map = [UPLOAD_ERR_INI_SIZE=>'文件超出服务器限制',UPLOAD_ERR_FORM_SIZE=>'文件超出表单限制',UPLOAD_ERR_PARTIAL=>'文件只上传了一部分',UPLOAD_ERR_NO_FILE=>'没有接收到文件',UPLOAD_ERR_NO_TMP_DIR=>'临时目录不存在',UPLOAD_ERR_CANT_WRITE=>'文件写入失败',UPLOAD_ERR_EXTENSION=>'扩展中断上传'];j(['code'=>400, 'msg'=>'上传失败:'.($map[$err] ?? '未知错误')]);
}/* ====== 基础校验 ====== */
$allowExt = ['jpg','jpeg','png','gif','webp'];
$maxSize  = 8 * 1024 * 1024; // 8MB
$origName = $_FILES['file']['name'];
$tmpPath  = $_FILES['file']['tmp_name'];
$size     = (int)$_FILES['file']['size'];$ext = strtolower(pathinfo($origName, PATHINFO_EXTENSION));
if (!in_array($ext, $allowExt, true)) j(['code'=>400, 'msg'=>'不支持的图片格式']);
if ($size <= 0 || $size > $maxSize)   j(['code'=>400, 'msg'=>'图片大小不符合要求(最大8MB)']);$finfo = function_exists('finfo_open') ? finfo_open(FILEINFO_MIME_TYPE) : false;
if ($finfo) {$mime = finfo_file($finfo, $tmpPath); finfo_close($finfo);$okM = ['image/jpeg','image/png','image/gif','image/webp'];if (!in_array($mime, $okM, true)) j(['code'=>400, 'msg'=>'文件类型校验失败']);
}/* ====== 保存到 /shopapi/upload/YYYYMMDD ====== */
$rootDir = __DIR__;
$day     = date('Ymd');
$saveDir = $rootDir . '/uploaddanhao/' . $day;
$relDir  = '/shopapi/uploaddanhao/' . $day . '/';
if (!is_dir($saveDir) && !mkdir($saveDir, 0775, true)) j(['code'=>500, 'msg'=>'目录创建失败']);$rand = bin2hex(random_bytes(8));
$saveName = $rand . '.' . $ext;
$dest = rtrim($saveDir, '/').'/'.$saveName;if (!move_uploaded_file($tmpPath, $dest)) j(['code'=>500, 'msg'=>'保存文件失败']);
$idxFile = $rootDir . '/upload/index.html';
if (!file_exists($idxFile)) @file_put_contents($idxFile, '');/* ====== 识别条码 -> 运单号 ====== */
$no = readWaybillFromImage($dest);
$base = current_base_url();
$url  = $base . $relDir . $saveName;
$path = $relDir . $saveName;/* ====== 可选:入库 ====== */
/*
CREATE TABLE `waybills` (`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,`no` VARCHAR(20) NOT NULL,`carrier` VARCHAR(20) DEFAULT NULL,`src_img` VARCHAR(255) DEFAULT NULL,`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`),UNIQUE KEY `uniq_no` (`no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
*/
if ($SAVE_DB && $no) {try {$pdo = new PDO($DB_DSN, $DB_USER, $DB_PASS, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,]);$stmt = $pdo->prepare('INSERT IGNORE INTO waybills(no, carrier, src_img) VALUES(?,?,?)');$stmt->execute([$no, null, $path]);} catch (Throwable $e) {// 入库失败不影响本次返回}
}/* ====== 返回 ====== */
if ($no) {j(['code'=>0, 'msg'=>'ok', 'no'=>$no, 'url'=>$url, 'path'=>$path, 'name'=>$saveName]);
} else {j(['code'=>422, 'msg'=>'未读到条码,可换角度/补光再拍', 'url'=>$url, 'path'=>$path, 'name'=>$saveName]);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/956870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月膜结构停车棚,膜结构汽车棚,膜结构推拉棚厂家最新推荐,实力品牌深度解析采购无忧之选!

引言 如今,膜结构停车棚、膜结构汽车棚、膜结构推拉棚在停车配套、商业仓储、民生服务等领域的应用愈发广泛,然而市场上厂家资质、产品质量差异较大,给需求方采购带来困扰。为此,行业权威协会联合第三方测评机构开…

2025深圳艺考生文化课辅导推荐榜:全日制艺考生文化课培训机构,精准提分机构精选

文化课已成为艺考生升学路上的关键支撑,2025 年相关培训需求持续升温。这份榜单聚焦深圳优质机构,为艺术学子筛选专业靠谱的文化课助力伙伴。 一、全日制艺考生文化课提升学习榜单摘要 企业介绍 本次上榜机构均深耕艺…

2025 年专用数控机床厂家最新推荐榜:品牌技术实力解析,附协会测评权威数据立车/数控双头/双头数控机床机床双主轴公司推荐

引言 机床作为制造业的 “母机”,其品质直接决定下游产业的加工精度与生产效率。据中国机床工具工业协会 2025 年三季度测评数据显示,国内机床市场中仅 32% 的企业能满足高端制造对 “高精度、高稳定性、智能化” 的…

2025室外/攀爬/绳网/水上/无动力/公园/景区/酒店/幼教/儿童滑梯/户外/淘气堡/小区/木质/游乐设施实力厂家推荐榜:启乐迪领衔,这些品牌凭品质站稳市场

在文旅消费与休闲产业升级的浪潮下,游乐设施的安全性、创新性与适配性成为市场核心需求。2025 年,一批兼具技术实力与服务能力的游乐设施厂家脱颖而出,以下推荐榜聚焦品质与口碑,为需求方提供参考。 广东启乐迪实业…

2025年方形橡胶减震器工厂权威推荐榜单:JGF型减震器/JGF型橡胶减震器/ZA型橡胶减震器源头厂家精选

随着现代工业对设备稳定性和噪声控制要求的不断提高,方形橡胶减震器作为基础减震元件,其市场需求持续增长。该类产品以其结构紧凑、安装便捷和良好的阻尼特性,在工业设备、建筑工程及轨道交通等领域发挥重要作用。本…

2025 年车床厂家最新推荐榜:聚焦创新实力与市场认可度,精选 优质企业助力企业采购决策双头车床/双头数控车床公司推荐

引言 在制造业转型升级进程中,车床作为核心加工设备,其品质与性能对生产效率影响重大。为给企业采购提供可靠参考,行业协会开展专项测评,从技术创新、产品品质、售后服务、市场口碑四大维度,对近百家车床制造商进…

2025/11/6

2025/11/6学习数据结构,复习二叉树的内容,并实现其算法

豆绿色16进制

豆绿色16进制护眼豆绿色背景RGB 护眼豆绿色RGB值:(199,237,204) 十六进制颜色:#C7EDCC或用#CCE8CF

详细介绍:用一个 Bash CLI 管理多款 AI 开发工具:jt-code-cli 实战与原理解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【中南大学主办|高录用快见刊】第七届建筑学研究前沿与生态环境国际研讨会(ARFEE 2025)

第七届建筑学研究前沿与生态环境国际研讨会(ARFEE 2025)将于2025年11月21-23日在湖南长沙召开。会议主要围绕“建筑学研究前沿与生态环境”的最新研究展开。本次会议旨在为研究领域为建筑与生态环境的、来自国内外高…

Redis 基础入门与核心概念【第一部分】

前面将多线程、锁、线程安全部分内容完整了解了一遍,接下来准备点啥呢?发现最开始Redis部分的内容写的有些凌乱,想着趁着这次机会把Redis部分从头到尾梳理一遍,如果想了解或者梳理Redis知识的小伙伴,看这个系列的…

2025年ASMEB16.5法兰定做厂家权威推荐榜单:ASMEB16.5法兰/ASMEB16.47法兰/钢制法兰源头厂家精选

在石油化工、电力能源及油气输送等工业领域,ASME B16.5法兰作为管道系统的核心连接部件,其精度、密封性与材料强度直接关系到整个系统的安全性与稳定性。随着全球工业项目对高压、高温工况需求的提升,市场对高精度、…

logback极简开箱使用 - --

引入依赖:<!-- Logback 日志依赖 --> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.12</version> </d…

2025 涂料供应厂家最新推荐榜:权威测评榜单发布,家装工程选品指南及品牌优选攻略

引言 2024 年涂料行业主营业务收入同比增长 1.56%,但市场中产品合格率仅 94%,环保与性能失衡问题突出。为破解选品难题,行业协会联合检测机构开展专项测评,形成最新推荐榜单。测评采用 “三维九项” 体系:资质维度…

2025 年药包材辅导公司最新推荐:GMP 认证 / 洁净厂房设计 / 设备验证优质机构权威盘点及选择指南实验室 3Q4Q / 洁净厂房设计装修 / 洁净厂房 3Q4Q 公司推荐

引言 随着药包材监管政策持续深化,企业在 GMP 体系搭建、洁净厂房改造、设备验证等环节面临的合规压力显著上升,2025 年市场对专业辅导服务的需求同比增长 37%。为破解行业机构资质参差不齐的痛点,本次榜单联合国际…

2025年江苏管教青少年的学校培训权威推荐榜单:江苏少年管教学校/江苏少年管理学校/江苏少年管制学校教育机构精选

近年来,青少年行为矫正教育需求显著增长,特殊培训学校通过专业化、系统化的教育模式,为存在网络沉迷、叛逆厌学等行为问题的青少年提供矫正服务。此类学校通常采用军事化管理、心理疏导、文化补习、素质拓展与家庭教…

图书出版的幕后故事-《JMeter核心技术、性能测试与性能分析》背后不为人知的事

一、性能测试,真的“过时”了吗? 最近几年,随着大模型、AIGC、智能体等概念的火爆,有人开始质疑:传统软件测试,尤其是性能测试,是不是已经“边缘化”了? 我们的答案是:恰恰相反,它比以往任何时候都更重要。 …

2025年哈尔滨十大有实力的装修装饰专业公司推荐

在冰城哈尔滨的装修市场,省心与品质是业主的核心诉求。从江北新房整装到松北老破小改造,从别墅定制到二手房翻新,选择一家专业靠谱的装修公司直接决定家居体验。以下依据服务口碑、专业实力与本地化适配性,为你推荐…

[Python刷题记录]-环形链表二-链表-中等

[Python刷题记录]-环形链表二-链表-中等链接:142. 环形链表 II - 力扣(LeetCode) 用哈希表,和环形链表[Python刷题记录]-环形链表-链表-简单 - Annetree - 博客园好像一样的,只是输出的值不一样1 # Definition fo…

2025 年最新推荐标识标牌制造厂家榜单:深度解读行业产能、技术实力及权威协会测评优选品牌金属 / 机场标识牌 / 指示标识推荐

引言 在商业发展与城市建设加速推进的当下,标识标牌作为信息传递、品牌展示与环境导向的核心载体,其市场需求持续增长且日益多元化。据行业权威协会最新测评数据显示,2024 年标识标牌行业规模同比增长 18%,但行业内…