QrcodeHelper.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace addons\WriteOff\common\helpers;
  3. use Endroid\QrCode\Builder\Builder;
  4. use Endroid\QrCode\Encoding\Encoding;
  5. use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
  6. use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
  7. use Endroid\QrCode\Label\Font\NotoSans;
  8. use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
  9. use Endroid\QrCode\Writer\PngWriter;
  10. use Endroid\QrCode\Writer\Result\AbstractResult;
  11. class QrcodeHelper
  12. {
  13. /** @var AbstractResult $result */
  14. protected $result;
  15. public function __construct($content, $label = '')
  16. {
  17. $builder = Builder::create()
  18. ->writer(new PngWriter())
  19. ->writerOptions([])
  20. ->data($content)
  21. ->encoding(new Encoding('UTF-8'))
  22. ->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
  23. ->size(130)
  24. ->margin(10)
  25. ->roundBlockSizeMode(new RoundBlockSizeModeMargin())
  26. ->labelText($label);
  27. $result = $builder->labelFont(new NotoSans(20))
  28. ->labelAlignment(new LabelAlignmentCenter())
  29. ->validateResult(false)
  30. ->build();
  31. $this->result = $result;
  32. }
  33. public function save2File($path)
  34. {
  35. $this->result->saveToFile($path);
  36. }
  37. }