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();
    }
相关推荐
爱勇宝5 分钟前
初创公司的“自己人”,到底能当多久?
前端·后端·程序员
掘金者阿豪6 分钟前
Mac mini Intel 报错 DNS_PROBE_FINISHED_BAD_CONFIG 完整排障指南
后端
大模型丫丫10 分钟前
如何提升单体 Spring Boot 应用的并发数?
java·spring boot·后端
Terra.K17 分钟前
ThreadLocal解决一个线程里面跨层传递问题
java·开发语言·后端
mjhcsp43 分钟前
DeepSeek V4 Flash 0731 (Batch) 深度评测报告
log4j·php·batch
Lost of 程序猿1 小时前
ASP.NET Core API 版本管理与契约演进:船岸版本碎片化下的兼容性工程
后端·asp.net
吃饱了得干活1 小时前
Redis 从单机到集群:持久化、主从复制、哨兵与集群完全指南
redis·后端
老孙讲技术1 小时前
【监控开发】把车间未戴帽和烟火报警接进安监值班群:workwearDetect 对图与 setMessageCallback 订 smokeAlarm
后端·物联网·音视频开发
计算机毕设定制辅导-无忧学长1 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
码路漫漫1 小时前
LRU 真的能解决日志按业务 Key 分文件的落地瓶颈吗?
java·后端