mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-09-02 05:27:15 +00:00
🚿
This commit is contained in:
@@ -160,7 +160,7 @@ final class Binarizer{
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function getHistogramBlackMatrix(int $width, int $height):BitMatrix{
|
||||
private function getHistogramBlackMatrix(int $width, int $height):BitMatrix{
|
||||
$matrix = new BitMatrix(max($width, $height));
|
||||
|
||||
// Quickly calculates the histogram by sampling four rows from the image. This proved to be
|
||||
|
||||
@@ -37,8 +37,7 @@ final class Decoder{
|
||||
* @throws \Throwable if the QR Code cannot be decoded
|
||||
*/
|
||||
public function decode(LuminanceSourceInterface $source):DecoderResult{
|
||||
$matrix = (new Binarizer($source))->getBlackMatrix();
|
||||
$bitMatrix = (new Detector($matrix))->detect();
|
||||
$bitMatrix = (new Detector($source))->detect();
|
||||
|
||||
try{
|
||||
// clone the BitMatrix to avoid errors in case we run into mirroring
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
namespace chillerlan\QRCode\Detector;
|
||||
|
||||
use chillerlan\QRCode\Decoder\{Binarizer, LuminanceSourceInterface};
|
||||
use RuntimeException;
|
||||
use chillerlan\QRCode\Common\Version;
|
||||
use chillerlan\QRCode\Decoder\BitMatrix;
|
||||
@@ -30,8 +31,8 @@ final class Detector{
|
||||
/**
|
||||
* Detector constructor.
|
||||
*/
|
||||
public function __construct(BitMatrix $image){
|
||||
$this->bitMatrix = $image;
|
||||
public function __construct(LuminanceSourceInterface $source){
|
||||
$this->bitMatrix = (new Binarizer($source))->getBlackMatrix();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -40,7 +41,7 @@ final class Detector{
|
||||
public function detect():BitMatrix{
|
||||
[$bottomLeft, $topLeft, $topRight] = (new FinderPatternFinder($this->bitMatrix))->find();
|
||||
|
||||
$moduleSize = (float)$this->calculateModuleSize($topLeft, $topRight, $bottomLeft);
|
||||
$moduleSize = $this->calculateModuleSize($topLeft, $topRight, $bottomLeft);
|
||||
$dimension = $this->computeDimension($topLeft, $topRight, $bottomLeft, $moduleSize);
|
||||
$provisionalVersion = new Version((int)(($dimension - 17) / 4));
|
||||
$alignmentPattern = null;
|
||||
|
||||
Reference in New Issue
Block a user