前言:关于php中如何安转Imagick可见相关教程,在识别二维码用到了这个扩展:
khanamiryan/php-qrcode-detector-decoder
需要注意的是目前该扩展已经更新到了2.0.2,默认使用composer安转不指定版本会安装最新版本的扩展,这时需要注意的是php的版本:
PHP >= 8.1
GD Library
不然直接使用会出现以下错误:
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项目为例:
安装指定版本:
composer require khanamiryan/qrcode-detector-decoder:1.0.5.2
实际使用:
//转换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;}
use Zxing\QrReader;//识别二维码/*** $png_path 为二维码的绝对路径***/public function identifyQRcode($png_path){$qrCode = new QrReader($png_path);return $qrCode->text();}