添加程序集引用
ThoughtWorks.QRCode
采用dotnet 运行时安装
dotnet add package ThoughtWorks.QRCode
下面的实例不仅生成了二维码,还在二维码中心位置增加了文字,便于人进行区分
public async Task<StringDataResult> getQrCodeWithText(string text,string code)
{
StringDataResult result = new StringDataResult();
try
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 10;
qrCodeEncoder.QRCodeVersion = 0;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
var image = qrCodeEncoder.Encode(code, System.Text.Encoding.UTF8);
//var width = image.Width / 10;
//var dwidth = width * 2;
//Bitmap bmp = new Bitmap(image.Width + dwidth, image.Height + dwidth);
float fontsize = 36;
Graphics g = Graphics.FromImage(image);
GraphicsPath myPath = new GraphicsPath();
//g.Clear(Color.White);
FontFamily family = new FontFamily("Microsoft YaHei");
StringFormat format = StringFormat.GenericDefault;
myPath.AddString(text, family, 1, fontsize, new Point((Int32)(image.Width - text.Length * fontsize) / 2, (int)((image.Height - fontsize) * 0.5)), format);
//g.DrawString()
g.DrawPath(new Pen(Color.White,10), myPath);
g.FillPath(Brushes.Black, myPath);
g.Dispose();
result.Data = "data:image/png;base64," + image.ToBase64();
image.Dispose();
if (!string.IsNullOrWhiteSpace(result.Data))
{
result.Success = true;
result.Message = "生成二维码成功";
}
return result;
}
catch (Exception ex)
{
result.Data = ex.ToString();
return result;
}
}