zoukankan      html  css  js  c++  java
  • Net Core 生成二维码 一维码

    二维码包QRCoder

    生成二维码帮助类

        public interface IQRCodeMoons: ISingletonDependency
        {
            Bitmap GetQRCode(string data, int pixel);
    
            byte[] GetQrCodeByteArray(string data, int pixel = 4);
        }
        /// <summary>
        /// 二维码
        /// </summary>
        public class QRCodeMoons: IQRCodeMoons
        {
            /// <summary>
            /// 生成二维码
            /// </summary>
            /// <param name="url">存储内容</param>
            /// <param name="pixel">像素大小</param>
            /// <returns></returns>
            public Bitmap GetQRCode(string data, int pixel)
            {
                QRCodeGenerator generator = new QRCodeGenerator();
                QRCodeData codeData = generator.CreateQrCode(data, QRCodeGenerator.ECCLevel.M, true);
                QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData);
                Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, true);
                return qrImage;
            }
    
            /// <summary>
            /// 生成二维码并转成字节
            /// </summary>
            /// <param name="data"></param>
            /// <param name="pixel"></param>
            /// <returns></returns>
            public byte[] GetQrCodeByteArray(string data, int pixel = 4)
            {
                var bitmap = GetQRCode(data, pixel);
                using (MemoryStream ms = new MemoryStream())
                {
                    bitmap.Save(ms, ImageFormat.Jpeg);
                    return ms.GetBuffer();
                }
            }
        }

    直接把byte[] 字节返回给前端       前端通过img标签加载二维码<img "data:;base64,"+二维码字节数组 />

    前端通过img标签加载字节中的图片   

    1.在angular中     直接这样通过img加载会报错       提示不安全的url       需要对这个url进行消毒  进行安全监测

      注入消毒对象

    private sanitizer: DomSanitizer

      对当前地址进行消毒     通过[src] 属性绑定的方式    不能通过src='{{}}'这种方式绑定值       如果对html本文进行绑定也需要通过bypassSecurityTrustHtml进行消毒

              this.imageByte= this.sanitizer.bypassSecurityTrustResourceUrl("data:;base64,"+result.qrCode)
    <img  *ngIf="data" [src]="imageByte" />

    2.可以通过div   设置背景图片的方式避开这个问题    但是调用js打印的时候无法加载背景图片

                <div [ngStyle]="{'background-image':'url(data:;base64,'+data.qrCode+')'}"></div>
                <img width="75px" src="data:;base64,{{data.qrCode}}" />

    一维码包BarcodeLib

    生成一维码帮助类

        public interface IBarCodeMoons : ISingletonDependency
        {
            Image GetBarCode(string data);
    
            byte[] GetBarCodeByteArray(string data);
        }
        /// <summary>
        /// 一维码
        /// </summary>
        public class BarCodeMoons: IBarCodeMoons
        {
            /// <summary>
            /// 生成一维码
            /// </summary>
            /// <param name="data">存储内容</param>
            /// <returns></returns>
            public Image GetBarCode(string data)
            {
                BarcodeLib.Barcode b = new BarcodeLib.Barcode();
                Image img = b.Encode(BarcodeLib.TYPE.CODE128, data, Color.Black, Color.White, 290, 120);
                return img;
            }
    
            /// <summary>
            /// 生成一维码并转成字节
            /// </summary>
            /// <param name="data"></param>
            /// <returns></returns>
            public byte[] GetBarCodeByteArray(string data)
            {
                var img = GetBarCode(data);
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, ImageFormat.Jpeg);
                    return ms.GetBuffer();
                }
            }
        }
  • 相关阅读:
    Chrome浏览器设置默认编码
    linux上安装subversion
    详解Linux命令行下常用svn命令
    css 使容器宽度适应内容宽
    Windsor Spring
    T4 Generate POCO Class for MSSQ
    MSSQ 树型结构数据 循环操作
    System.Reflection.Emit 动态实现接口
    T4 SqlSugar MySql
    微信多开
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/11898577.html
Copyright © 2011-2022 走看看