123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Drawing;
- using QRCoder;
- using System.IO;
- using System.Drawing.Imaging;
- namespace Toolkits
- {
- public class QRCodeHelper
- {
- /// <summary>
- /// 生成二维码图片
- /// </summary>
- /// <param name="str"></param>
- /// <returns></returns>
- public Bitmap CreateQRimg(string str)
- {
- QRCodeGenerator qrGenerator = new QRCodeGenerator();
- QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
- QRCode qrCode = new QRCode(qrCodeData);
- Bitmap bt = qrCode.GetGraphic(20);
-
- return bt;
- }
- /// <summary>
- /// 生成二维码图片流(二维码上含文字)
- /// </summary>
- /// <param name="str1">二维码中要传递的数据(地址)</param>
- /// <param name="str2">二维码上显示的文字说明</param>
- public byte[] GenerateQRCode(string str1, string str2)
- {
- using (Image codeImage = CreateQRimg(str1), strImage = ConvertStringToImage(str2))
- {
- Image img = CombineImage(600, 600, codeImage, 60, 50, strImage, 0, 530);
- using (var stream = new MemoryStream())
- {
- img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
- //输出图片流
- return stream.ToArray();
- }
- }
- }
- /// <summary>
- /// 生成二维码图片流(不含文字)
- /// </summary>
- /// <param name="str">二维码中要传递的数据(地址)</param>
- /// <returns></returns>
- public byte[] GenerateQRCode(string str)
- {
- using (Image codeImage = CreateQRimg(str))
- {
- using (var stream = new MemoryStream())
- {
- codeImage.Save(stream, ImageFormat.Jpeg);
- return stream.ToArray();
- }
- }
- }
- /// <summary>
- /// 生成文字图片
- /// </summary>
- /// <param name="str"></param>
- /// <returns></returns>
- public Image ConvertStringToImage(string str)
- {
- Bitmap image = new Bitmap(600, 40, PixelFormat.Format24bppRgb);
- Graphics g = Graphics.FromImage(image);
- try
- {
- Font font = new Font("SimHei", 14, FontStyle.Regular);
- g.Clear(Color.White);
- StringFormat format = new StringFormat();
- format.Alignment = StringAlignment.Center;
- format.LineAlignment = StringAlignment.Center;
- Rectangle rectangle = new Rectangle(0, 0, 600, 40);
- g.DrawString(str, font, new SolidBrush(Color.Black), rectangle, format);
- return image;
- }
- catch (Exception e)
- {
- throw e;
- }
- finally
- {
- GC.Collect();
- }
- }
- /// <summary>
- /// 在画板中合并二维码图片和文字图片
- /// </summary>
- /// <param name="width"></param>
- /// <param name="height"></param>
- /// <param name="imgLeft"></param>
- /// <param name="imgLeft_left"></param>
- /// <param name="imgLeft_top"></param>
- /// <param name="imgRight"></param>
- /// <param name="imgRight_left"></param>
- /// <param name="imgRight_top"></param>
- /// <returns></returns>
- public Image CombineImage(int width, int height, Image imgLeft, int imgLeft_left, int imgLeft_top, Image imgRight, int imgRight_left, int imgRight_top)
- {
- Bitmap image = new Bitmap(width, height, PixelFormat.Format24bppRgb);
- Graphics g = Graphics.FromImage(image);
- try
- {
- g.Clear(Color.White);
- g.DrawImage(imgLeft, imgLeft_left, imgLeft_top, 500, 500);
- g.DrawImage(imgRight, imgRight_left, imgRight_top, imgRight.Width, imgRight.Height);
- return image;
- }
- catch (Exception e)
- {
- throw e;
- }
- finally
- {
- g.Dispose();
- }
- }
- }
- }
|