C# 生成带二维码的海报
1 /// <summary> 2 /// 生成带二维码的海报 3 /// </summary> 4 /// <param name="haibao">背景海报地址</param> 5 /// <param name="qrcodeurl">生成二维码的链接</param> 6 /// <returns></returns> 7 8 public string DrawHaiBao(string haibao, string qrcodeurl) 9 { 10 string newpath = ""; 11 12 //背景图 13 System.Drawing.Image imgSrc = System.Drawing.Image.FromStream(System.Net.WebRequest.Create(haibao).GetResponse().GetResponseStream()); 14 15 //二维码图片 16 Image qrCodeImage = QRCodeHelper.BuildQRCode(qrcodeurl); 17 //处理头像图片大小 100*100px 18 Image titleImage = QRCodeHelper.ReduceImage(item.Result.headimgurl, 100, 100); 19 20 21 using (Graphics g = Graphics.FromImage(imgSrc)) 22 { 23 //画专属推广二维码 24 g.DrawImage(qrCodeImage, new Rectangle(432, 25 1270, 26 qrCodeImage.Width, 27 qrCodeImage.Height), 28 0, 0, qrCodeImage.Width, qrCodeImage.Height, GraphicsUnit.Pixel); 29 //画头像 30 g.DrawImage(titleImage, 30, 50, titleImage.Width, titleImage.Height); 31 32 Font font = new Font("宋体",18, FontStyle.Bold); 33 34 g.DrawString(item.Result.nickname, font, new SolidBrush(Color.White), 220, 50); 35 36 } 37 38 string path11 = $"/img/{Guid.NewGuid().ToString("N")}" + ".jpg"; 39 string physicPath = GetAbsolutePath($"~{path11}"); 40 string dir = Path.GetDirectoryName(physicPath); 41 if (!Directory.Exists(dir)) 42 Directory.CreateDirectory(dir); 43 newpath = $"{_configuration["WebRootUrl"]}{path11}"; 44 string ppth = _hostingEnvironment.WebRootPath + path11; 45 46 imgSrc.Save(ppth, System.Drawing.Imaging.ImageFormat.Jpeg); 47 48 return newpath; 49 }
QRCodeHelper: 二维码生成帮助类
1 /// <summary> 2 /// 生成二维码,默认边长为250px 3 /// </summary> 4 /// <param name="content">二维码内容</param> 5 /// <returns></returns> 6 public static Image BuildQRCode(string content) 7 { 8 return BuildQRCode(content, 250, Color.White, Color.Black); 9 } 10 11 /// <summary> 12 /// 生成二维码,自定义边长 13 /// </summary> 14 /// <param name="content">二维码内容</param> 15 /// <param name="imgSize">二维码边长px</param> 16 /// <returns></returns> 17 public static Image BuildQRCode(string content, int imgSize) 18 { 19 return BuildQRCode(content, imgSize, Color.White, Color.Black); 20 } 21 22 /// <summary> 23 /// 生成二维码 24 /// 注:自定义边长以及颜色 25 /// </summary> 26 /// <param name="content">二维码内容</param> 27 /// <param name="imgSize">二维码边长px</param> 28 /// <param name="background">二维码底色</param> 29 /// <param name="foreground">二维码前景色</param> 30 /// <returns></returns> 31 public static Image BuildQRCode(string content, int imgSize, Color background, Color foreground) 32 { 33 return BuildQRCode_Logo(content, imgSize, background, foreground, null); 34 } 35 36 /// <summary> 37 /// 生成二维码并添加Logo 38 /// 注:默认生成边长为250px的二维码 39 /// </summary> 40 /// <param name="content">二维码内容</param> 41 /// <param name="logo">logo图片</param> 42 /// <returns></returns> 43 public static Image BuildQRCode_Logo(string content, Bitmap logo) 44 { 45 return BuildQRCode_Logo(content, 250, Color.White, Color.Black, logo); 46 } 47 48 /// <summary> 49 /// 生成二维码并添加Logo 50 /// 注:自定义边长 51 /// </summary> 52 /// <param name="content">二维码内容</param> 53 /// <param name="imgSize">二维码边长px</param> 54 /// <param name="logo">logo图片</param> 55 /// <returns></returns> 56 public static Image BuildQRCode_Logo(string content, int imgSize, Bitmap logo) 57 { 58 return BuildQRCode_Logo(content, imgSize, Color.White, Color.Black, logo); 59 } 60 61 /// <summary> 62 /// 生成二维码并添加Logo 63 /// 注:自定义边长以及颜色 64 /// </summary> 65 /// <param name="content">二维码内容</param> 66 /// <param name="imgSize">二维码边长px</param> 67 /// <param name="background">二维码底色</param> 68 /// <param name="foreground">二维码前景色</param> 69 /// <param name="logo">logo图片</param> 70 /// <returns></returns> 71 public static Image BuildQRCode_Logo(string content, int imgSize, Color background, Color foreground, Bitmap logo) 72 { 73 QRCodeGenerator qrGenerator = new QRCodeGenerator(); 74 QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q); 75 QRCode qrCode = new QRCode(qrCodeData); 76 var ppm = imgSize / qrCodeData.ModuleMatrix.Count; 77 Bitmap qrCodeImage = qrCode.GetGraphic(ppm, foreground, background, logo); 78 79 return qrCodeImage; 80 }

浙公网安备 33010602011771号