using Avalonia.Media.Imaging; using QRCoder; namespace DownKyi.Core.Utils; public static class QRCode { /// /// 生成二维码 /// /// 信息 /// 版本 1 ~ 40 /// 像素点大小 /// 图标路径 /// 图标尺寸 /// 图标边框厚度 /// 二维码白边 /// 位图 public static Bitmap EncodeQRCode(string msg, int version, int pixel, string? iconPath, int iconSize, int iconBorder, bool whiteEdge) { var codeGenerator = new QRCodeGenerator(); var codeData = codeGenerator.CreateQrCode(msg, QRCodeGenerator.ECCLevel.H /* 这里设置容错率的一个级别 */, true, false, QRCodeGenerator.EciMode.Utf8, version); var qrCode = new BitmapByteQRCode(codeData); var qrCodeAsBitmapByteArr = qrCode.GetGraphic(20); Bitmap icon; icon = string.IsNullOrEmpty(iconPath) ? null : new Bitmap(iconPath); Bitmap bmp; using var ms = new MemoryStream(qrCodeAsBitmapByteArr); bmp = new Bitmap(ms); // Bitmap bmp = qrCode.GetGraphic(pixel, Color.FromRgb(0,0,0), Color.FromRgb(255,255,255), icon, icon_size, icon_border, white_edge); return bmp; } }