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();
    }
相关推荐
凤山老林1 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
北京中科新远科技2 小时前
高速光模块上线验收实战:DOM、FEC、BER与端口计数器怎么一起看
服务器·网络·php
伯恩bourne2 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
张彦峰ZYF2 小时前
停顿短不等于延迟低:G1、ZGC 与低延迟服务的目标分野、代价账本与选型标定
后端·回收暂停、应用停止总时长·到达安全点、分配停滞·屏障吃吞吐、并发线程吃核心·并发窗口吃堆余量·分区式靠挑回收集兑现目标·染色指针式不支持压缩引用
pride.li3 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
upala3 小时前
【仓颉语言入门 · 第二篇 第 6 课】
后端
罗丹丹Luna3 小时前
移动端显示“已提交”以后:SAP 与低代码集成该怎样暴露真实状态
后端·架构
码事漫谈3 小时前
因为太想讨好你,所以AI会骗你
后端
吴凡wudianmei3 小时前
每调一次模型都花钱?如何用工程手段把调用压到最少?
前端·后端·架构
花间相见3 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端