Orl 短網址,供三星、福斯使用

QRGen.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Http\Services\ConstDef\GeneralConst;
  4. use chillerlan\QRCode\QRCode;
  5. use chillerlan\QRCode\QROptions;
  6. use Illuminate\Console\Command;
  7. class QRGen extends Command
  8. {
  9. protected $signature = 'qr:gen {--src= : csv path} {--dst= : folder path}';
  10. protected $description = 'batch generate qrcode';
  11. public function __construct()
  12. {
  13. parent::__construct();
  14. }
  15. /**
  16. * 脚本入口
  17. */
  18. public function handle()
  19. {
  20. $src = $this->option('src');
  21. $dst = $this->option('dst');
  22. $cnt = [];
  23. if (($handle = fopen($src, "r")) !== false) {
  24. while (($data = fgetcsv($handle, 2000, ",")) !== false) {
  25. // 變數整理
  26. $folder_name = $data[0] ?? '未命名';
  27. $url = $data[1] ?? 'https://www.google.com';
  28. $path = $dst . '/' . $folder_name;
  29. // 創建資料夾
  30. if (!file_exists($path)) mkdir($path, 0777, true);
  31. // 檔名生成
  32. $cnt[ $folder_name ] = (!isset($cnt[ $folder_name ])) ? 1 : $cnt[ $folder_name ] + 1;
  33. $file_name = $folder_name . str_pad($cnt[ $folder_name ], 6, '0', STR_PAD_LEFT) . '.png';
  34. // QRCODE 檔案生成
  35. $options = new QROptions([
  36. 'version' => 5,
  37. 'outputType' => QRCode::OUTPUT_IMAGE_PNG,
  38. 'imageBase64' => false,
  39. ]);
  40. $myfile = fopen($path . '/' . $file_name, "w");
  41. fwrite($myfile, (new QRCode($options))->render($url));
  42. fclose($myfile);
  43. }
  44. fclose($handle);
  45. }
  46. }
  47. }