zoukankan      html  css  js  c++  java
  • 二维码生成与解析

            #region 二维码
            int i = 2;
            /// <summary>
            /// 生成二维码
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnProduct_Click(object sender, EventArgs e)
            {
                ThoughtWorks.QRCode.Codec.QRCodeEncoder endocder = new ThoughtWorks.QRCode.Codec.QRCodeEncoder();
                //二维码背景颜色
                endocder.QRCodeBackgroundColor = System.Drawing.Color.White;
                //二维码编码方式
                endocder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE;
                //每个小方格的宽度
                endocder.QRCodeScale = 4;
                //二维码版本号
                endocder.QRCodeVersion = 5;//控制版本,不同版本,显示出来的样式不一样
                //纠错等级
                endocder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M;
                var person = new { Id = ++i, Name = "wolfy", Gender = 1, Age = 24 + ++i };
                //将json川做成二维码
                using (Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8))
                {
                    //Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8);
                    var strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode{i}.jpg");
                    strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg");
                    if (!Directory.Exists(Path.GetDirectoryName(strSavePath)))
                    {
                        Directory.CreateDirectory(strSavePath);
                    }
                    //System.Runtime.InteropServices.ExternalException:
                    //     使用错误的图像格式保存图像。 - 或 - 图像已保存到同一文件从创建它。出现一般都是保存路经问题,或者aspnet中是读写文件权限问题
                    bitmap.Save(strSavePath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    pbxPicture.SizeMode = PictureBoxSizeMode.Zoom;
                    //pbxQRCode.Image = Bitmap.FromHbitmap(bitmap.GetHbitmap());
                    //第一种绘图
                    IntPtr hBitmap = bitmap.GetHbitmap();
                    pbxQRCode.Image = Bitmap.FromHbitmap(hBitmap);
                    //pbxQRCode.Image.Save(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg);
                    DeleteObject(hBitmap);
                    bitmap.Dispose();
    
                    //第二种绘图
                    //Graphics graphics = Graphics.FromImage(bitmap);
                    //graphics.Clear(Color.White);
                    ////再bitmap上绘图
                    //graphics.DrawImage(new Bitmap(""), new PointF(0, 0));
                    //graphics.Dispose();
                }
    
    
                //解密二维码
                //ThoughtWorks.QRCode.Codec.QRCodeDecoder qRCodeDecoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder();
                //var decoderResult = qRCodeDecoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(new Bitmap(strSavePath)));
    
            }
    
            /// <summary>
            /// 解密二维码
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnConsume_Click(object sender, EventArgs e)
            {
                var strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode{i}.jpg");
                strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg");
                ThoughtWorks.QRCode.Codec.QRCodeDecoder qRCodeDecoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder();
                var decoderResult = qRCodeDecoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(new Bitmap(strSavePath)));
                lblTakephotoSavePath.Text = $"二维码:{decoderResult}";
            }
            #endregion
    龙腾一族至尊龙骑
  • 相关阅读:
    SQL语句实例学习汇总
    sql语句一些实用技巧for oracle
    无限级递归生成HTML示例及ListBox,DropDownList等无限树
    另类Sql语句直接导出表数据到Execl
    powerdesigner中sql脚本小写转大写,去双引号
    C#中利用jQuery获取Json值示例,Ajax方式。
    利用jquery解决下拉菜单被Div遮挡问题
    获取Textarea 元素当前的光标位置及document.selection.createRange()资料
    oracle中一些常用函数
    IE6 动态创建 iframe 无法显示的 bug,万恶的IE6
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/15167021.html
Copyright © 2011-2022 走看看