• 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();
                }
            }
        }
  • 相关阅读:
    2021年1月9日 Why retailers everywhere should look to China
    #微信小程序 #添加域名https://api.weixin.qq.com ,提示“为保障帐号安全不可使用此域名地址,请修改”
    用户画像分析与场景应用
    数据仓库组件:HBase集群环境搭建和应用案例
    标签管理体系之业务应用
    数据仓库组件:Hive环境搭建和基础用法
    数据应用场景之标签管理体系
    Solon rpc 之 SocketD 协议
    Solon rpc 之 SocketD 协议
    Solon rpc 之 SocketD 协议
  • 原文地址:https://www.cnblogs.com/jiangchengbiao/p/11898577.html
Copyright © 2020-2023  润新知