前言:关于php中如何安转Imagick可见相关教程,在识别二维码用到了这个扩展:
需要注意的是目前该扩展已经更新到了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();
}