C#一键生成图片二维码实例

身处于二维码遍布的时代,我们在开发程序的过程中不可避免的会根据相关需求生成一些特定的二维码,虽然现状二维码生成工具到处都有,但是在管理系统开发过程中还是需要自己动手。

本次我用到的是QRCoder.BLL 在NuGet包里可以直接搜索下载,具体安装就不再赘述了。

实现思路:把根据特定组合规则组合后的URL生成二维码,然后转化为Base64返回给前台,在前台赋值给Img标签,实现一键生成二维码功能。

生成二维码代码
传值:内容,级别,像素大小,ico地址,ico大小,边框大小,是否有白边
public static Bitmap GetCode(string msg, int version, int pixel, string icon_path, int icon_size, int icon_border, bool white_edge) {
            QRCoder.QRCodeGenerator code_generator = new QRCoder.QRCodeGenerator();
            QRCoder.QRCodeData code_data = code_generator.CreateQrCode(msg, QRCoder.QRCodeGenerator.ECCLevel.M/* 这里设置容错率的一个级别 */, true, true, QRCoder.QRCodeGenerator.EciMode.Utf8, version);
            QRCoder.QRCode code = new QRCoder.QRCode(code_data);
            Bitmap icon = new Bitmap(icon_path);
            Bitmap bmp = code.GetGraphic(pixel, Color.Black, Color.White, icon, icon_size, icon_border, white_edge);
            return bmp;
        }
转换为Base64位代码 
public static string ImgToBase64String(Bitmap bmp)
        {
            try
            {
                MemoryStream ms = new MemoryStream();
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                byte[] arr = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(arr, 0, (int)ms.Length);
                ms.Close();
                return Convert.ToBase64String(arr);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

通过引用QRCoder.BLL使生成二维码变得非常简单。


THE END