lib_qr.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. defined('ONLY_ONLY_ONLY') or exit('Access Denied');
  3. use Endroid\QrCode\Color\Color;
  4. use Endroid\QrCode\Builder\Builder;
  5. use Endroid\QrCode\Encoding\Encoding;
  6. use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
  7. use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
  8. use Endroid\QrCode\Label\Font\NotoSans;
  9. use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
  10. use Endroid\QrCode\Writer\PngWriter;
  11. require_once WEB_PHY_ROOT."/base/composer/vendor/autoload.php";
  12. function lib_qrbuild($png2jpg, $data, $savePath = ""){
  13. return lib_qrbuild_core($png2jpg, $data, $savePath);
  14. }
  15. function lib_qrbuild2($png2jpg, $data, $savePath, $size, $margin){
  16. return lib_qrbuild_core($png2jpg, $data, $savePath, $size, $margin);
  17. }
  18. function lib_qrbuild3($png2jpg, $data, $savePath, $foreColor, $backColor){
  19. return lib_qrbuild_core($png2jpg, $data, $savePath, 100, 4, $foreColor, $backColor);
  20. }
  21. function lib_qrbuild4($png2jpg, $data, $savePath, $label,$labelFont, $logPath){
  22. return lib_qrbuild_core($png2jpg, $data, $savePath, 100, 4, null, null,$label,$labelFont, $logPath);
  23. }
  24. function lib_qrbuild_core(
  25. $png2jpg,
  26. $data,
  27. $savePath = "",
  28. $size = 100,
  29. $margin = 4,
  30. $foreColor = null,
  31. $backColor = null,
  32. $label = null,
  33. $labelFont = null,
  34. $logPath = ""
  35. ) {
  36. $size=intval($size);
  37. if($size<6) $size=6;
  38. if($size>600) $size=600;
  39. $margin=intval($margin);
  40. if($margin<0) $margin=0;
  41. if($margin>20) $margin=20;
  42. $build = Builder::create()
  43. ->writer($png2jpg=="png"?new PngWriter():new PngWriter())
  44. ->writerOptions([])
  45. ->data($data)
  46. ->encoding(new Encoding('UTF-8'))
  47. ->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
  48. ->size($size)
  49. ->margin($margin)
  50. ->foregroundColor($foreColor?$foreColor:new Color(0, 0, 0))
  51. ->backgroundColor($backColor?$backColor:new Color(255, 255, 255))
  52. ->roundBlockSizeMode(new RoundBlockSizeModeMargin());
  53. if(!empty($label)){
  54. $build->labelText($label)
  55. ->labelFont($labelFont?$labelFont:new NotoSans(14))
  56. ->labelAlignment(new LabelAlignmentCenter());
  57. }
  58. if(file_exists($logPath)){
  59. $build->logoPath($logPath);
  60. }
  61. $result = $build->build();
  62. // echo $result->getString();
  63. if(!empty($savePath)){
  64. // Save it to a file
  65. $result->saveToFile($savePath);
  66. }else{
  67. // base64 Generate a data URI to include image data inline (i.e. inside an <img> tag)
  68. return $result->getDataUri();
  69. }
  70. }