引入包
1.通过NuGet引入ZXing.Net
2.生成二维码并保存
public string ErWeMaPrint(string name)//内容
{
// 配置参数==============================================================================
Dictionary<EncodeHintType, Object> hints = new Dictionary<EncodeHintType, object>();
hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.L); // 容错级别 这里选择最高H级别
hints.Add(EncodeHintType.MARGIN, 0);//设置边距为0
hints.Add(EncodeHintType.PURE_BARCODE, true);//可以设置这个属性是否显示条码底部内容,true为不显示,false反之
MultiFormatWriter writer = new MultiFormatWriter();
// 图像数据转换,使用了矩阵转换 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
ZXing.Common.BitMatrix bm = writer.encode(name, ZXing.BarcodeFormat.QR_CODE, 125,125, hints);
BarcodeWriter barcodeWriter = new BarcodeWriter();
System.Drawing.Bitmap bmp = RemoveWhiteMargin(bm, barcodeWriter.Write(bm));//去除白边
string filepath = Server.MapPath("~/Content/images/ErWeMaPrint/");
//获取当前时间
string datime = DateTime.Now.ToString("yyyyMMddHHmmss");
bmp.Save(filepath + datime + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
return datime;//返回生成一维码图片的路径
}
private static Bitmap RemoveWhiteMargin(ZXing.Common.BitMatrix bitMatrix, Bitmap bitmap)
{
//获取参数
int[] rec = bitMatrix.getEnclosingRectangle();
int left = rec[0];
int top = rec[1];
int width = rec[2];
int height = rec[3];
Bitmap newImg = new Bitmap(width, height);
Graphics g = Graphics.FromImage(newImg);
//截取
g.DrawImage(bitmap, 0, 0, new Rectangle(left, top, newImg.Width, newImg.Height), GraphicsUnit.Pixel);
return newImg;
}
参考至:https://blog.csdn.net/qq996980215/article/details/110379873