System.TypeInitializationException : The type initializer for 'Gdip' threw an exception. ---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information. Stack Trace: at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap) /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm) /_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): at System.Drawing.Bitmap..ctor(String filename) /_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): at System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+MoveNext() /_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext() ----- Inner Stack Trace ----- /_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): at System.Drawing.LibraryResolver.EnsureRegistered() /_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize() /_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): at System.Drawing.SafeNativeMethods.Gdip..cctor()报错原因
.NET Standard 1.3 .NET Core .NET 6 Tizen Android iOS tvOS macOS Mac Catalyst WinUI 3 (Windows App SDK / Uno Platform) Windows Classic Desktop (Windows.Forms / WPF) Web Assembly (WASM) Uno Platform (iOS / macOS / Android / WebAssembly)这些平台可以使用 SkiaSharp 来进行跨平台的图形渲染和绘制操作。
/// <summary> /// 堆代码 duidaima.com /// 生成二维码图片 /// </summary> public static void GenerateQRCode() { var qrCodeContent = "追逐时光者"; using (var generator = new QRCodeGenerator()) { // 创建二维码(并设置纠错能力最高级) var createQrCode = generator.CreateQrCode(qrCodeContent, ECCLevel.H); var skImageInfo = new SKImageInfo(300, 300); // 创建SkiaSharp画布 using (var surface = SKSurface.Create(skImageInfo)) { var canvas = surface.Canvas; // 渲染二维码到画布 canvas.Render(createQrCode, skImageInfo.Width, skImageInfo.Height); using (var image = surface.Snapshot())// 获取画布快照 using (var data = image.Encode(SKEncodedImageFormat.Png, 100))// 编码画布快照为PNG格式的数据 using (var stream = File.OpenWrite(@"MyQRCode.png")) { data.SaveTo(stream);// 将数据保存到文件流中,生成二维码图片 } } } }二维码的纠错能力通常分为四个级别
namespace SkiaSharp.QrCode { public enum ECCLevel { L, M, Q, H } }
3、查看生成效果