• .net core二维码生成


    引用 ZXing

    然后如下代码

        public static class BarcodeGenerator
        {
            public enum OutputFormat
            {
                PNG,
                SVG
            }
            public static String GeneratePng(string content, BarcodeFormat barcodeformat, int width, int height, int margin, string alt)
            {
                var qrWriter = new ZXing.BarcodeWriterPixelData
                {
                    Format = barcodeformat,
                    Options = new EncodingOptions { Height = height, Width = width, Margin = margin }
                };
    
    
                var pixelData = qrWriter.Write(content);
    
                // creating a bitmap from the raw pixel data; if only black and white colors are used it makes no difference
                // that the pixel data ist BGRA oriented and the bitmap is initialized with RGB
                // the System.Drawing.Bitmap class is provided by the CoreCompat.System.Drawing package
                using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
                using (var ms = new MemoryStream())
                {
                    // lock the data area for fast access
                    var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height),
                       System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
                    try
                    {
                        // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
                        System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0,
                           pixelData.Pixels.Length);
                    }
                    finally
                    {
                        bitmap.UnlockBits(bitmapData);
                    }
                    // save to stream as PNG
                    bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    
                    //output.TagName = "img";
                    //output.Attributes.Clear();
                    //output.Attributes.Add("width", pixelData.Width);
                    //output.Attributes.Add("height", pixelData.Height);
                    //output.Attributes.Add("alt", alt);
                    //output.Attributes.Add("src",
                    //   String.Format("data:image/png;base64,{0}", Convert.ToBase64String(ms.ToArray())));
                    return String.Format("data:image/png;base64,{0}", Convert.ToBase64String(ms.ToArray()));
                }
            }
    
            public static String GenerateSvg(string content, BarcodeFormat barcodeformat, int width, int height, int margin, string alt)
            {
                var qrWriter = new ZXing.BarcodeWriterSvg
                {
                    Format = barcodeformat,
                    Options = new EncodingOptions { Height = height, Width = width, Margin = margin }
                };
    
    
                var svgImage = qrWriter.Write(content);
                return String.Format("data:image/svg+xml;{0}", svgImage.Content);
                //output.TagName = "img";
                //output.Attributes.Clear();
                //output.Attributes.Add("width", svgImage.Width);
                //output.Attributes.Add("height", svgImage.Height);
                //output.Attributes.Add("alt", alt);
                //output.Attributes.Add("src", new Microsoft.AspNetCore.Html.HtmlString(
                //   String.Format("data:image/svg+xml;{0}", svgImage.Content)));
            }
        }
    
        public static class ImgConvert
        {
            #region base64转图片
            /// <summary>
            /// 图片上传 Base64解码
            /// </summary>
            /// <param name="dataURL">Base64数据</param>
            /// <param name="imgName">图片名字</param>
            /// <returns>返回一个相对路径</returns>
            public static string DecodeBase64ToImage(this string dataURL, string imgName)
            {
                string path = "";
                String base64 = dataURL.Substring(dataURL.IndexOf(",") + 1);      //将‘,’以前的多余字符串删除
                System.Drawing.Bitmap bitmap = null;//定义一个Bitmap对象,接收转换完成的图片
    
                try//会有异常抛出,try,catch一下
                {
    
                    byte[] arr = Convert.FromBase64String(base64);//将纯净资源Base64转换成等效的8位无符号整形数组
    
                    System.IO.MemoryStream ms = new System.IO.MemoryStream(arr);//转换成无法调整大小的MemoryStream对象
                    bitmap = new System.Drawing.Bitmap(ms);//将MemoryStream对象转换成Bitmap对象              
                    //string url = HttpRuntime.AppDomainAppPath.ToString();
                    //string tmpRootDir = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString()); //获取程序根目录 
                    string tmpRootDir = AppContext.BaseDirectory;
                    string imagesurl2 =Path.Combine(tmpRootDir, imgName + ".jpg");
                    path = imagesurl2;
                    bitmap.Save(imagesurl2, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到服务器路径
                    //bitmap.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                    //bitmap.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
                    //bitmap.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);
                    ms.Close();//关闭当前流,并释放所有与之关联的资源
                    bitmap.Dispose();
                }
                catch (Exception e)
                {
                    string massage = e.Message;
                }
                return path;//返回相对路径
            }
            #endregion
    
            #region 图片转base64
            /// <summary>
            /// 图片转base64
            /// </summary>
            /// <param name="path">图片路径</param><br>        
            /// <returns>返回一个base64字符串</returns>
            public static string DecodeImageToBase64(this string path)
            {
                if (!File.Exists(path)) {
                    return "";
                }
                string base64str = "";
                try
                {
                    //读图片转为Base64String
                    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
                    //System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
                    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();
                    bmp.Dispose();
                    base64str = Convert.ToBase64String(arr);
                }
                catch (Exception e)
                {
                    string mss = e.Message;
                }
                return "data:image/jpg;base64," + base64str;
            }
            #endregion
        }
    

      

    使用

    string url="存入二维码的值";
    string qrCode = BarcodeGenerator.GeneratePng(url, ZXing.BarcodeFormat.QR_CODE, 150, 150, 0, url);
    String base64 = qrCode.Substring(qrCode.IndexOf(",") + 1);
    byte[] arr = Convert.FromBase64String(base64);
    var filePath = qrCode.DecodeBase64ToImage("图片名称");
    
  • 相关阅读:
    C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
    Linq Like
    BS下实现WIN7下Aero效果
    Log4Net使用指南
    Sql 中取小数点后面两位小数.
    微软企业库回滚操作
    C#文件操作
    LinQ To XML——用LinQ查询XML
    Sql Server 字段类型说明
    Blog of the Day:几个中文技术类Blogger Groups
  • 原文地址:https://www.cnblogs.com/Cein/p/12018323.html
Copyright © 2020-2023  润新知