|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace PHPQRCode; |
|
|
|
use Exception; |
|
|
|
class QRencode { |
|
|
|
public $casesensitive = true; |
|
public $eightbit = false; |
|
|
|
public $version = 0; |
|
public $size = 3; |
|
public $margin = 4; |
|
|
|
public $structured = 0; |
|
|
|
public $level = Constants::QR_ECLEVEL_L; |
|
public $hint = Constants::QR_MODE_8; |
|
|
|
|
|
public static function factory($level = Constants::QR_ECLEVEL_L, $size = 3, $margin = 4) |
|
{ |
|
$enc = new QRencode(); |
|
$enc->size = $size; |
|
$enc->margin = $margin; |
|
|
|
switch ($level.'') { |
|
case '0': |
|
case '1': |
|
case '2': |
|
case '3': |
|
$enc->level = $level; |
|
break; |
|
case 'l': |
|
case 'L': |
|
$enc->level = Constants::QR_ECLEVEL_L; |
|
break; |
|
case 'm': |
|
case 'M': |
|
$enc->level = Constants::QR_ECLEVEL_M; |
|
break; |
|
case 'q': |
|
case 'Q': |
|
$enc->level = Constants::QR_ECLEVEL_Q; |
|
break; |
|
case 'h': |
|
case 'H': |
|
$enc->level = Constants::QR_ECLEVEL_H; |
|
break; |
|
} |
|
|
|
return $enc; |
|
} |
|
|
|
|
|
public function encodeRAW($intext, $outfile = false) |
|
{ |
|
$code = new QRcode(); |
|
|
|
if($this->eightbit) { |
|
$code->encodeString8bit($intext, $this->version, $this->level); |
|
} else { |
|
$code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); |
|
} |
|
|
|
return $code->data; |
|
} |
|
|
|
|
|
public function encode($intext, $outfile = false) |
|
{ |
|
$code = new QRcode(); |
|
|
|
if($this->eightbit) { |
|
$code->encodeString8bit($intext, $this->version, $this->level); |
|
} else { |
|
$code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); |
|
} |
|
|
|
QRtools::markTime('after_encode'); |
|
|
|
if ($outfile!== false) { |
|
file_put_contents($outfile, join("\n", QRtools::binarize($code->data))); |
|
} else { |
|
return QRtools::binarize($code->data); |
|
} |
|
} |
|
|
|
|
|
public function encodePNG($intext, $outfile = false,$saveandprint=false) |
|
{ |
|
try { |
|
ob_start(); |
|
$tab = $this->encode($intext); |
|
$err = ob_get_contents(); |
|
ob_end_clean(); |
|
|
|
if ($err != '') |
|
QRtools::log($outfile, "ERROR: " . $err); |
|
|
|
$maxSize = (int)(Constants::QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin)); |
|
|
|
QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint); |
|
} catch (Exception $e) { |
|
echo $e->getMessage(); |
|
die(); |
|
|
|
QRtools::log($outfile, $e->getMessage()); |
|
} |
|
} |
|
} |
|
|