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();
    }
相关推荐
长栎15 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode15 小时前
Redis 在生产项目的使用
前端·后端
用户5598224812215 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode15 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战15 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha16 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn16 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户7623524259116 小时前
ShardingJDBC
后端
行者全栈架构师16 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
Colin草率地做慢慢地改16 小时前
关于QuickStore这个项目的重构(2)- 数据库建表文件
后端·面试·架构