|
1 | 1 | @php |
2 | | -use BaconQrCode\Renderer\ImageRenderer; |
3 | | -use BaconQrCode\Renderer\Image\ImagickImageBackEnd; |
4 | | -use BaconQrCode\Renderer\RendererStyle\RendererStyle; |
5 | | -use BaconQrCode\Writer; |
6 | | -use BaconQrCode\Renderer\Image\SvgImageBackEnd; |
| 2 | +use SimpleSoftwareIO\QrCode\Facades\QrCode; |
7 | 3 | use App\Models\User; |
8 | 4 | $usrhandl = Auth::user()->littlelink_name; |
9 | 5 | @endphp |
|
685 | 681 | </div> |
686 | 682 | @php |
687 | 683 | try { |
688 | | - $qrCodeData = url('@'.Auth::user()->littlelink_name); |
| 684 | + $redirectURL = url('').'/'.'u/'.Auth::user()->id; |
689 | 685 |
|
690 | | - $renderer = new ImageRenderer( |
691 | | - new RendererStyle(400), |
692 | | - new SvgImageBackEnd() |
693 | | - ); |
694 | | - $writer = new Writer($renderer); |
| 686 | + if (extension_loaded('imagick')) { |
| 687 | + $imgSrc = QrCode::format('png')->size(1000)->generate($redirectURL); |
| 688 | + $imgSrc = base64_encode($imgSrc); |
| 689 | + $imgSrc = 'data:image/png;base64,' . $imgSrc; |
| 690 | + $imgType = 'png'; |
| 691 | + } else { |
| 692 | + $imgSrc = QrCode::size(1000)->generate($redirectURL); |
| 693 | + $imgSrc = base64_encode($imgSrc); |
| 694 | + $imgSrc = 'data:image/svg+xml;base64,' . $imgSrc; |
| 695 | + $imgType = 'svg'; |
| 696 | + } |
695 | 697 |
|
696 | | - $svgImageData = $writer->writeString($qrCodeData); |
697 | | -
|
698 | | - $svgImageBase64 = base64_encode($svgImageData); |
699 | | -
|
700 | | - $imgSrc = 'data:image/svg+xml;base64,' . $svgImageBase64; |
701 | | - } catch(exception $e) {echo '<p class="text-center pt-5">{{__("messages.QR code could not be generated")}}</p>'; if(auth()->user()->role == 'admin'){echo "<p class='ps-3'>{{__('messages.Reason:')}} <pre class='ps-4'>".$e->getMessage()."</pre></p>";}} |
| 698 | + } catch(exception $e) { |
| 699 | + $imgSrc = url('/assets/linkstack/images/themes/no-preview.png'); |
| 700 | + $imgType = NULL; |
| 701 | + } |
702 | 702 | @endphp |
703 | 703 | <div class="modal-body"> |
704 | 704 | <div class="bd-example"> |
705 | | - <img draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail"> |
| 705 | + <img id="generatedImage" draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail"> |
706 | 706 | </div> |
707 | 707 | </div> |
708 | 708 | <div class="modal-footer"> |
| 709 | + @if($imgType == 'png') |
| 710 | + <button type="button" class="btn btn-info" id="downloadButton">{{__('messages.Download')}}</button> |
| 711 | + @endif |
709 | 712 | <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button> |
710 | 713 | </div> |
711 | 714 | </div> |
712 | 715 | </div> |
713 | 716 | </div> |
714 | 717 |
|
| 718 | + <script> |
| 719 | + document.addEventListener("DOMContentLoaded", function() { |
| 720 | + var downloadButton = document.getElementById("downloadButton"); |
| 721 | + var generatedImage = document.getElementById("generatedImage"); |
| 722 | + |
| 723 | + downloadButton.addEventListener("click", function() { |
| 724 | + var format = generatedImage.getAttribute("data-format") || "png"; |
| 725 | + var downloadLink = document.createElement("a"); |
| 726 | + downloadLink.href = generatedImage.src; |
| 727 | + downloadLink.download = "generated_image." + format; |
| 728 | + document.body.appendChild(downloadLink); |
| 729 | + downloadLink.click(); |
| 730 | + document.body.removeChild(downloadLink); |
| 731 | + }); |
| 732 | + }); |
| 733 | + </script> |
| 734 | + |
715 | 735 | <!-- Library Bundle Script --> |
716 | 736 | <script src="{{asset('assets/js/core/libs.min.js')}}"></script> |
717 | 737 |
|
|
0 commit comments