QRCoder
QRCoder copied to clipboard
PlatformNotSupportedException when trying to generate QR Code.
I have a blazor web assembly project and I am trying to generate QR using this nuget package but it is always throwing PlatformNotSupportedException Here is my code snippet : if (_selectedBCard != null) { var inviteLink = string.Format(Constant.WebCardUrl, _selectedBCard.BcardId);
var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(inviteLink, QRCodeGenerator.ECCLevel.Q);
var qrCode = new QRCode(qrCodeData);
var base64Image = qrCode.GetGraphic(10);
QRByte = $"data:image/png;base64,{base64Image}";
}
I don't think that there's any other initialization required for it to work.
Here's the stack trace - System.PlatformNotSupportedException: System.Drawing.Common is not supported on this platform. at System.Drawing.Image..ctor() at System.Drawing.Bitmap..ctor(Int32 width, Int32 height) at QRCoder.QRCode.GetGraphic(Int32 pixelsPerModule, Color darkColor, Color lightColor, Boolean drawQuietZones) at QRCoder.QRCode.GetGraphic(Int32 pixelsPerModule) at company_portal.Pages.BcardsModel.GenerateQRCode() in C:\Users\pa740\source\repos\BusinessCode\company_portal\Pages\Bcards.razor.cs:line 392 at company_portal.Pages.Bcards.GenerateQRCode(CompanyBcardResponse bcard) in C:\Users\pa740\source\repos\BusinessCode\company_portal\Pages\Bcards.razor:line 407 at company_portal.Pages.Bcards.<>c__DisplayClass0_0.<BuildRenderTree>b__7() in C:\Users\pa740\source\repos\BusinessCode\company_portal\Pages\Bcards.razor:line 195 at Microsoft.AspNetCore.Components.EventCallbackWorkItem.InvokeAsync[Object](MulticastDelegate delegate, Object arg) at Microsoft.AspNetCore.Components.EventCallbackWorkItem.InvokeAsync(Object arg) at Microsoft.AspNetCore.Components.ComponentBase.Microsoft.AspNetCore.Components.IHandleEvent.HandleEventAsync(EventCallbackWorkItem callback, Object arg) at Microsoft.AspNetCore.Components.EventCallback.InvokeAsync(Object arg) at Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(UInt64 eventHandlerId, EventFieldInfo fieldInfo, EventArgs eventArgs)
Type of issue
[ ] Bug
Steps to Reproduce (for bugs)
Copy and paste the above code snippet.
Your Environment
- Version used: 1.4.2, 1.4.3
- Compiled from source or NuGet package?: Nuget package
- Payload/Encoded text: Mentioned above
- Used ECC-level: Q
- Environment (.NET 3.5, .NET 4.X, .NETCore, ...): .NET 6
use the code below to generate png image as byte[]
using var qrGenerator = new QRCodeGenerator();
using var qrCodeData = qrGenerator.CreateQrCode(inviteLink, QRCodeGenerator.ECCLevel.Q);
using var qrCode = new PngByteQRCode(qrCodeData);
byte[] png = qrCode.GetGraphic(20);
you can then encode that into a data url
@Awesomer9561 Microsoft removed System.Drawing support in .NET 6 for non-Windows platforms. Since the QRCode renderer uses System.Drawing, it's correct that you see a PlatformNotSupportException. But as @timdinh said - that shouldn't be a problem as there are other rendering classes that are support on non-Windows platforms. Check the compatibility matrix to find a renderer that fits your platform/environment: https://github.com/codebude/QRCoder/wiki/Advanced-usage---QR-Code-renderers#2-overview-of-the-different-renderers