Thinkphp使用Zxing擴展庫解析二維碼內(nèi)容圖文講解
一、下載PHP版本的Zxing擴展庫
下載地址:https://github.com/khanamiryan/php-qrcode-detector-decoder
二、使用Zxing擴展庫
1、文件下載好后,直接解壓,結(jié)構(gòu)如下,我們只需要lib這個文件夾
2、將lib文件夾重命名為Zxing,然后打開Zxing目錄下的QrReader.php文件,可以發(fā)現(xiàn)命名空間是Zxing
3、接下來就很簡單了,把Zxing文件夾放到thnikphp的擴展目錄extend里
4、報錯 Fatal error:: Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in
報錯原因:PHP內(nèi)存不夠
解決方法:在調(diào)用QrReader前,先用ini_set()方法修改內(nèi)存限制大小
//修改php內(nèi)存限制為1024M ini_set('memory_limit','1024M');
5、報錯 Call to undefined function Zxing\Common\fill_array()
解決方法:修改Zxing目錄的QrReader.php文件,載入common/customFunctions.php文件,如下:
<?php namespace Zxing; use Zxing\Common\HybridBinarizer; use Zxing\Qrcode\QRCodeReader; include_once('common/customFunctions.php'); final class QrReader { }
QrReader.php完整代碼:
<?php namespace Zxing; use Zxing\Common\HybridBinarizer; use Zxing\Qrcode\QRCodeReader; include_once('common/customFunctions.php'); final class QrReader { const SOURCE_TYPE_FILE = 'file'; const SOURCE_TYPE_BLOB = 'blob'; const SOURCE_TYPE_RESOURCE = 'resource'; private $bitmap; private $reader; private $result; public function __construct($imgSource, $sourceType = QrReader::SOURCE_TYPE_FILE, $useImagickIfAvailable = true) { if (!in_array($sourceType, [ self::SOURCE_TYPE_FILE, self::SOURCE_TYPE_BLOB, self::SOURCE_TYPE_RESOURCE, ], true)) { throw new \InvalidArgumentException('Invalid image source.'); } $im = null; switch ($sourceType) { case QrReader::SOURCE_TYPE_FILE: if ($useImagickIfAvailable && extension_loaded('imagick')) { $im = new \Imagick(); $im->readImage($imgSource); } else { $image = file_get_contents($imgSource); $im = imagecreatefromstring($image); } break; case QrReader::SOURCE_TYPE_BLOB: if ($useImagickIfAvailable && extension_loaded('imagick')) { $im = new \Imagick(); $im->readImageBlob($imgSource); } else { $im = imagecreatefromstring($imgSource); } break; case QrReader::SOURCE_TYPE_RESOURCE: $im = $imgSource; if ($useImagickIfAvailable && extension_loaded('imagick')) { $useImagickIfAvailable = true; } else { $useImagickIfAvailable = false; } break; } if ($useImagickIfAvailable && extension_loaded('imagick')) { if (!$im instanceof \Imagick) { throw new \InvalidArgumentException('Invalid image source.'); } $width = $im->getImageWidth(); $height = $im->getImageHeight(); $source = new IMagickLuminanceSource($im, $width, $height); } else { if (!is_resource($im)) { throw new \InvalidArgumentException('Invalid image source.'); } $width = imagesx($im); $height = imagesy($im); $source = new GDLuminanceSource($im, $width, $height); } $histo = new HybridBinarizer($source); $this->bitmap = new BinaryBitmap($histo); $this->reader = new QRCodeReader(); } public function decode() { try { $this->result = $this->reader->decode($this->bitmap); } catch (NotFoundException $er) { $this->result = false; } catch (FormatException $er) { $this->result = false; } catch (ChecksumException $er) { $this->result = false; } } public function text() { $this->decode(); if (method_exists($this->result, 'toString')) { return $this->result->toString(); } return $this->result; } public function getResult() { return $this->result; } }
6、在代碼里調(diào)用
//引用 use Zxing\QrReader; //調(diào)用類庫 $qrcode = new QrReader("二維碼圖片路徑"); $content = $qrcode->text();
到此這篇關(guān)于Thinkphp使用Zxing擴展庫解析二維碼內(nèi)容圖文講解的文章就介紹到這了,更多相關(guān)Thinkphp使用Zxing擴展庫解析二維碼內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
2個自定義的PHP in_array 函數(shù),解決大量數(shù)據(jù)判斷in_array的效率問題
大家可能都用過in_array來判斷一個數(shù)據(jù)是否在一個數(shù)組中,一般我們的數(shù)組可能數(shù)據(jù)都比較小,對性能沒什么影響,所以也就不會太在意2014-04-04php中serialize序列化與json性能測試的示例分析
本篇文章介紹了,在php中serialize序列化與json性能測試的示例分析。需要的朋友參考下2013-04-04PHP實現(xiàn)數(shù)組向任意位置插入,刪除,替換數(shù)據(jù)操作示例
這篇文章主要介紹了PHP實現(xiàn)數(shù)組向任意位置插入,刪除,替換數(shù)據(jù)操作,結(jié)合實例形式分析了php中array_splice函數(shù)具體功能、參數(shù)及數(shù)組的插入、刪除、數(shù)值替換等相關(guān)操作技巧,需要的朋友可以參考下2019-04-04Zend Framework框架的數(shù)據(jù)庫追蹤器使用示例
這篇文章主要介紹了Zend Framework框架的數(shù)據(jù)庫追蹤器使用示例,現(xiàn)把追蹤器的使用方法分享給大家,需要的朋友可以參考下2014-03-03CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀(jì)錄
這篇文章主要介紹了在CentOS系統(tǒng)環(huán)境下安裝 PHP5.5+Redis+XDebug+Nginx+MySQL開發(fā)環(huán)境的全過程,非常的細(xì)致詳盡,推薦給有需要的小伙伴們參考下吧。2015-03-03