php中使用Imagick转换PDF第一页为PNG图片并且识别出二维码

前言:关于php中如何安转Imagick可见相关教程,在识别二维码用到了这个扩展:

khanamiryan/php-qrcode-detector-decoder

需要注意的是目前该扩展已经更新到了2.0.2,默认使用composer安转不指定版本会安装最新版本的扩展,这时需要注意的是php的版本:

PHP >= 8.1

GD Library

不然直接使用会出现以下错误:

php 复制代码
PHP Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) in https://github.com/khanamiryan/php-qrcode-detector-decoder/blob/1.0.6/lib/QrReader.php#L16

经过在实际项目中测试,当使用php版本为7.4.3时需要使用对应的扩展版本为khanamiryan/qrcode-detector-decoder: 1.0.5.2,以下为在项目中安装使用方法。

以当前使用的laravel8项目为例:

安装指定版本:

php 复制代码
composer require khanamiryan/qrcode-detector-decoder:1.0.5.2

实际使用:

php 复制代码
    //转换PDF为PNG图片
    public function transformPdfToPng($pdf_path)
    {
        $page = 0; //转换PDF第一页
        //PDF转换成图片
        $imagick = new \Imagick();
        //设置图片分辨率
        $imagick->setResolution(160, 160); //设置为160,增加二维码识别准确率
        //该函数接受单个参数$quality,该参数保存一个表示图像压缩质量的整数值
        $imagick->setCompressionQuality(100);
        $imagick->readImage($pdf_path . "[" . $page . "]"); //设置读取pdf的第一页
        $png_path = storage_path("app/public/temp").time()."png"; //生成读片地址
        $imagick->writeImage($png_path);
        //返回转换后的PNG图片地址
        return $png_path;
    }
php 复制代码
	use Zxing\QrReader;

    //识别二维码
    /**
    * $png_path 为二维码的绝对路径
    *
    **/
    public function identifyQRcode($png_path)
    {
        $qrCode = new QrReader($png_path);
        return $qrCode->text();
    }
相关推荐
杨文说AI与数字化2 分钟前
分时预约系统的库存模型:为什么'加个预约功能'必然出现超卖与假满
后端
开开心心_Every4 分钟前
黄金价格软件国内外价格实时监控超方便
运维·服务器·游戏·智能手机·pdf·lua·perl
Darling噜啦啦4 分钟前
# MySQL + Milvus = PostgreSQL?一张表搞定 AI Agent 的长时记忆(附完整代码)
后端·postgresql·orm
用户713874229004 分钟前
在 .NET 中使用 AWS Secrets Manager:Config 与 Client 详解
后端
福大大架构师每日一题5 分钟前
2026-10-16:交替数列的最大元素。用go语言,给定三个整数 n、s、m。现在要构造一个包含 n 个整数的序列,其中第一个数必须等于 s。序列中相邻数字的
后端
yunwei375 分钟前
eBPF 入门实践教程:BPF Token,安全的委托式权限与程序加载
linux·后端·性能优化
136096757238 分钟前
旧 SQL 在新 PG 上能不能跑
后端
SamDeepThinking9 分钟前
配货单发货数为空告警误报治理:写表延迟复核方案
java·后端·架构
知守观10 分钟前
mirrorOf= 把私服请求拦去了公网镜像:本地能跑,CI 上内部包 404 排查
后端·ci/cd·maven
万物智能16 分钟前
鸿蒙UART总线怎么用?—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端