I QR Code sono oramai incredibilmente diffusi e supportati da tutti i moderni device. Basta avviare la macchina fotografica del nostro smartphone e inquadrare un codice, per avviare automaticamente la action presente nell'immagine, sia essa un link HTML, una chat di WhatsApp o un evento per il calendar.
La libreria in assoluto più diffusa in .NET per generare questi codici è chiamata QRCoder (https://github.com/codebude/QRCoder) e, oltre che su GitHub, è anche disponibile sotto forma di NuGet package:
dotnet add package QRCode
Una volta aggiunta la reference alla nostra solution, possiamo creare una action che generi un QR Code con il codice seguente:
[HttpGet] public IActionResult Get(string url) { var payload = new PayloadGenerator.Url(url).ToString(); var data = new QRCodeGenerator().CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q); var qrCode = new SvgQRCode(data).GetGraphic(20); return this.Content(qrCode, MediaTypeHeaderValue.Parse("image/svg+xml")); }
Nel nostro esempio, creeremo un codice che contenga un link all'URL fornito come parametro. Per farlo, sfruttiamo uno dei vari PayloadGenerator presenti nella libreria (ce ne sono diversi, da connessioni WiFi a BitCoin wallet) per costruire il contenuto desiderato. Il parametro ECCLevel, che dobbiamo passare al QRCodeGenerator, indica il livello di correzione dell'errore di cui vogliamo dotare il nostro codice. Nell'esempio in alto abbiamo scelto il valore Q che indica "Quality".
Come ultimo passaggio, effettuiamo il rendering Svg del codice, creando una istanza di SvgQRCode. Esistono diversi formati di output, da bitmap a PDF, persino ASCII.
Al termine dell'operazione, restituiamo il contenuto con il media type corretto.
Se abbiamo svolto i passaggi correttamente, dovremmo essere in grado di visualizzare un risultato simile a quello in figura.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sostituire la GitHub Action di login su private registry
Evitare la script injection nelle GitHub Actions
Gestire i null nelle reactive form tipizzate di Angular
Implementare il throttling in ASP.NET Core
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Usare il versioning con i controller di ASP.NET Core Web API
Eseguire una query su SQL Azure tramite un workflow di GitHub
Routing statico e PreRendering in una Blazor Web App
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Load test di ASP.NET Core con k6
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Steel Style CheckBox per Silverlight 4.0
- Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
- Utilizzare Docker Compose con Azure App Service