生成二维码功能

1. 指定某张Logo图片进行生成

须引用ThoughtWorks.QRCode.dll

   QrcodeWeChart qwc = new QrcodeWeChart();
            // int memberid = 1000000;
            // int order = 1;
            // string tkt = qwc.ticket(memberid, order);
            //  Ticket t = JsonConvert.DeserializeObject<Ticket>(tkt);
            string url = XXXXXXXXXXXXXXXXXXXXXX;//t.url ;   //要生成二维码的url地址

            //验证网址
            if (url.Length == 0)
            {
                //Utils.ShowMsg2(this, "请输入网址");
                return;
            }
            //生成二维码
            QRCodeEncoder qrEntity = new QRCodeEncoder();
            qrEntity.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//二维码编码方式
            qrEntity.QRCodeScale = 10;//每个小方格的宽度
            qrEntity.QRCodeVersion = 5;//二维码版本号
            qrEntity.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//纠错码等级
            System.Drawing.Bitmap srcimage;
            //动态调整二维码版本号,上限40,过长返回空白图片,编码后字符最大字节长度2953
            while (true)
            {
                try
                {
                    srcimage = qrEntity.Encode(url, System.Text.Encoding.UTF8);
                    break;
                }
                catch (IndexOutOfRangeException ex)
                {
                    if (qrEntity.QRCodeVersion < 40)
                    {
                        qrEntity.QRCodeVersion++;
                    }
                    else
                    {
                        srcimage = new Bitmap(300, 300);
                        break;
                    }
                }
            }
            System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath("~/images/favicon.jpg"));

            if (img !=null)
            {
                //System.IO.Stream picstream = img1.InputStream;
                //System.Drawing.Image img = System.Drawing.Image.FromStream(picstream);
                if (img.Width > 250 || img.Height > 250)
                {
                    img.Dispose();
                    //(this, "上传Logo图片错误,Logo图片宽度不能超过250px,且高度不能超过250px!");
                    return;
                    img.Dispose();
                }
                //将logo绘制到二维码
                Bitmap bLogo = img as Bitmap; //获取logo图片对象
                bLogo = new Bitmap(bLogo, 50, 50); //改变图片的大小这里我们设置为30
                int Y = srcimage.Height;
                int X = srcimage.Width;
                Point point = new Point(X / 2 - 15, Y / 2 - 15);//logo图片绘制到二维码上,这里将简单计算一下logo所在的坐标
                Graphics g = Graphics.FromImage(srcimage);//创建一个画布
                g.DrawImage(bLogo, point);//将logo图片绘制到二维码图片上 

                //imgQR.ImageUrl = srcimage;
            }
            string tempDire = Server.MapPath("~/imges/Qt");
            if (!Directory.Exists(tempDire)) { Directory.CreateDirectory(tempDire); }
            string imgPath = "~/imges/Qt/" + DateTime.Now.ToString("yyyy_MM_dd_hh_ss_mm") + ".bmp";
            srcimage.Save(Server.MapPath(imgPath));

2.  使用FileupLoad上传的型式上传    须引用ThoughtWorks.QRCode.dll

//验证网址
            string url = this.txtURL.Text.Trim();
            if (url.Length == 0)
            {
                Utils.ShowMsg2(this, "请输入网址");
                return;
            }
            //生成二维码
            QRCodeEncoder qrEntity = new QRCodeEncoder();
            qrEntity.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//二维码编码方式
            qrEntity.QRCodeScale = 10;//每个小方格的宽度
            qrEntity.QRCodeVersion = 5;//二维码版本号
            qrEntity.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//纠错码等级
            System.Drawing.Bitmap srcimage;
            //动态调整二维码版本号,上限40,过长返回空白图片,编码后字符最大字节长度2953
            while (true)
            {
                try
                {
                    srcimage = qrEntity.Encode(url, System.Text.Encoding.UTF8);
                    break;
                }
                catch (IndexOutOfRangeException ex)
                {
                    if (qrEntity.QRCodeVersion < 40)
                    {
                        qrEntity.QRCodeVersion++;
                    }
                    else
                    {
                        srcimage = new Bitmap(300, 300);
                        break;
                    }
                }
            }

            //验证logo
            HttpPostedFile logo = fileLogo.PostedFile;
            if (logo.ContentLength > 0)
            {
                if (!Utils.IsImage(logo.InputStream))
                {
                    Utils.ShowMsg2(this, "图片格式错误");
                    return;
                }
                System.IO.Stream picstream = logo.InputStream;
                System.Drawing.Image img = System.Drawing.Image.FromStream(picstream);
                if (img.Width > 250 || img.Height > 250)
                {
                    img.Dispose();
                    Utils.ShowMsg2(this, "上传Logo图片错误,Logo图片宽度不能超过250px,且高度不能超过250px!");
                    return;
                    img.Dispose();
                }
                //将logo绘制到二维码
                Bitmap bLogo = img as Bitmap; //获取logo图片对象
                bLogo = new Bitmap(bLogo, 50, 50); //改变图片的大小这里我们设置为30
                int Y = srcimage.Height;
                int X = srcimage.Width;
                Point point = new Point(X / 2 - 15, Y / 2 - 15);//logo图片绘制到二维码上,这里将简单计算一下logo所在的坐标
                Graphics g = Graphics.FromImage(srcimage);//创建一个画布
                g.DrawImage(bLogo, point);//将logo图片绘制到二维码图片上 

                //imgQR.ImageUrl = srcimage;
            }

            string tempDire = Server.MapPath("../Upload/supplier/" + CurrentSupplier.SupplierID + "/QrBitMap/");
            if (!Directory.Exists(tempDire)) { Directory.CreateDirectory(tempDire); }
            string imgPath = "../Upload/supplier/" + CurrentSupplier.SupplierID + "/QrBitMap/" + Guid.NewGuid().ToString() + ".bmp";
            srcimage.Save(Server.MapPath(imgPath));
时间: 2025-01-02 10:02:11

生成二维码功能的相关文章

在jsp页面生成二维码

本文介绍在线生成二维码功能. 思路仿照验证码生成的思路. 代码如下: package com.sys.productNew.action; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import or

Android实例-实现扫描二维码并生成二维码(XE8+小米5)

相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: 过几天,刚上传的包,都没有办法显示. 注意事项: 如果只加了Lib,然没有改AndroidManifest.xml,App在呼叫BarCode时会ANR没反应.开始可能没有官方的classes.dex,但如果发现编译出错后,请再检查一下.TMessageManager须加System.Messaging单元. 使用DelphiXE7加入JavaLibrary后,呼叫Zxing相机1.新建一个DelphiXE工程,双

在angular中结合使用jquery的生成二维码插件

最近在开发项目中,需要在ionic框架中使用到jquery的生成二维码功能的插件,起初我直接在templates中写js代码: 发现这段代码根本就不会执行,原因是js代码必须要在该模块的作用域范围内才能生效,于是把这段代码该模块对应的controller中即可: 在学习angular中永远不要忘记作用域这件事.哈哈,看来学习编程的过程中有时需要抛开传统的思维方式才行啊.虽然只是一个小小的问题,但对于初学angular的我还是纠结了好一阵.

几行代码搞定java生成解析二维码功能

最近公司要求扫描二维码和生成二维码的功能.而群里部分网友也提到了.我这里就写了一个demo,和大家分享.代码很简介,希望大家能够喜欢. 网友表示在网上搜索了很多,发现不是代码不全,就是jar不匹配. 我这里共享了一个zxing的2.2版本的例子,也提供了下载地址.实现代码如下: package com.herman.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcep

java生成二维码扫码网页自动登录功能

找了很多资料,七七八八都试了一遍,最终写出来了这个功能. 菜鸟一枚,此文只为做笔记. 简单的一个生成二维码,通过网页确认登录,实现二维码页面跳转到主页面. 有三个servlet: CodeServlet.java 干2件事 a:生成随机的uuid,是一个唯一标识,该标识贯穿整个流程 b:生成二维码图片,二维码信息:http://xx.xx.xx.xx:8080/xxxx/login.jsp?uuid= xxxx LongConnectionCheckServlet.java 进行长连接轮询操作,

使用jquery.qrcode生成二维码实现微信分享功能

前言: 最近有个这样的需求,在pc端的商品详情页增加分享功能. 微博分享.QQ好友分享.QQ空间分享这些都很常见.但是微信分享我还没有手动写过(以前改过). 最终效果如下图: 解决方案:使用jquery.qrcode插件生成二维码 jquery.qrcode cdn地址 参见: https://www.bootcdn.cn/jquery.qrcode/ 1.加载 jQuery 和 jquery.qrcode.js: <script src="https://cdn.bootcss.com/

海报二维码识别不出,生成带参数二维码功能

生成海报二维码,可以统计通过这个二维码进来的粉丝 利用公众号提供的渠道二维码编写源码,生成二维码 use Endroid\QrCode\QrCode; //支持文字.链接 $content = '微号帮参数二维码功能' . rand(1000, 9999); $qrCode = new QrCode($content); // 指定内容类型 header('Content-Type: '.$qrCode->getContentType()); // 输出二维码 echo $qrCode->wr

C#生成二维码和条形码并实现打印的功能

下载地址:http://pan.baidu.com/s/1kTr3Vuf Step1:使用VS2010新建一个窗体程序项目: Step2:添加三个类:分别是BarCodeClass.cs.DocementBase.cs.imageDocument.cs.(下一步贴出这些类的代码);;;;添加下载回来的引用zxing.dll. >说明: <1>   BarCodeClass.cs主要用来实现条形码和二维码的生成和解析. <2>   DocementBase.cs.imageDo

web网页外部分享到微信、朋友圈、扣扣、微博等功能、自动生成二维码等

1.这里重中之重是分享到微信:web端网页通常是没有权限分享过去的 所以用: weixin://dl/business/?ticket=ta428dhj739hg3efe6e  但是这个ticket真的是很蛋疼,查了许多资料说还得花钱在第三方对接巴拉巴拉的,2.所以:window.open('http://api.liufuweb.com/api/p5.php?p=d&url=你要分享的链接'); 但是这个缺点是:打开微信的时候要识别二维码才能访问到你要分享的页面3.就是内嵌入到app端,写个方