开发者社区> 社会主义> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C#生成带Logo二维码

简介:
+关注继续查看

1.下载ThoughtWorks.QRCode引用并添加在工程中
2.在实现类QRCodeEncoderDemo中引入Dll,添加方法



using System;
 
using System.Collections.Generic;
 
using System.Drawing;
 
using System.Drawing.Drawing2D;
 
using System.Linq;
 
using System.Web;
 
using ThoughtWorks.QRCode;
 
 
using ThoughtWorks.QRCode.Codec;
 
namespace WebApplication3
 
{
 
    public class QRCodeEncoderDemo
 
    {
 
        /// <summary>  
 
        /// 生成二维码.  
 
        /// </summary>  
 
        /// <param name="data">需要添加进去的文本</param>  
 
        /// <returns></returns>  
 
        public System.Drawing.Image GCode(String data)
 
        {
 
            
 
           QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
 
             
 
            qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
 
            qrCodeEncoder.QRCodeScale = 5;
 
            qrCodeEncoder.QRCodeVersion = 7;
 
 
            qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
 
            var pbImg = qrCodeEncoder.Encode(data, System.Text.Encoding.UTF8);
 
            var width = pbImg.Width / 10;
 
            var dwidth = width * 2;
 
            Bitmap bmp = new Bitmap(pbImg.Width + dwidth, pbImg.Height + dwidth);
 
            Graphics g = Graphics.FromImage(bmp);
 
            var c = System.Drawing.Color.White;
 
            g.FillRectangle(new SolidBrush(c), 0, 0, pbImg.Width + dwidth, pbImg.Height + dwidth);
 
            g.DrawImage(pbImg, width, width);
 
            g.Dispose();
 
            return bmp;
 
        }
 
 
        /// <summary>  
 
        /// 调用此函数后使此两种图片合并,类似相册,有个  
 
        /// 背景图,中间贴自己的目标图片  
 
        /// </summary>  
 
        /// <param name="sourceImg">粘贴的源图片</param>  
 
        /// <param name="destImg">粘贴的目标图片</param>  
 
        public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack, string destImg)
 
        {
 
 
            System.Drawing.Image img = System.Drawing.Image.FromFile(destImg);        //照片图片    
 
            if (img.Height != 50 || img.Width != 50)
 
            {
 
                img = KiResizeImage(img, 60, 60, 0);
 
            }
 
            Graphics g = Graphics.FromImage(imgBack);
 
 
            //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高); 
 
            g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);        
 
 
            //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);
 
            //相片四周刷一层黑色边框  
 
 
            //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);  
 
 
            g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2, img.Width, img.Height);
 
            GC.Collect();
 
            return imgBack;
 
        }
 
 
        /// <summary>  
 
        /// Resize图片  
 
        /// </summary>  
 
        /// <param name="bmp">原始Bitmap</param>  
 
        /// <param name="newW">新的宽度</param>  
 
        /// <param name="newH">新的高度</param>  
 
        /// <param name="Mode">保留着,暂时未用</param>  
 
        /// <returns>处理以后的图片</returns>  
 
        public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)
 
        {
 
            try
 
            {
 
                System.Drawing.Image b = new Bitmap(newW, newH);
 
                Graphics g = Graphics.FromImage(b);
 
 
                // 插值算法的质量  
 
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
 
 
                g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
 
                g.Dispose();
 
 
                return b;
 
            }
 
            catch
 
            {
 
                return null;
 
            }
 
        }
 
    }
 
}

 3.生成二维码(psb.jpg可自选,此处默认)


protected void BtnCreate_Click(object sender, EventArgs e)
 
{         
 
    QRCodeEncoderDemo qrc = new QRCodeEncoderDemo();
 
    //生成二维码图片
 
    System.Drawing.Image ImageBack=qrc.GCode(this.txtstr.Text.ToString());
 
    string DestImg = Server.MapPath(@"~/Image/psb.jpg");
 
    System.Drawing.Image Img = QRCodeEncoderDemo.CombinImage(ImageBack, DestImg);
 
    string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
 
    Img.Save(Server.MapPath(@"~/Image/") + filename);
 
    this.Img.ImageUrl = "~/Image/" + filename;
 
}

  4.解析二维码


protected void Button1_Click(object sender, EventArgs e)
 
        {
 
            QRCodeDecoder decoder = new QRCodeDecoder();
 
           Bitmap bt = new Bitmap(Server.MapPath(@"~/Image/"+this.Img.ImageUrl.Substring(this.Img.ImageUrl.LastIndexOf('/'))));
 
            string decodedString = decoder.decode(new QRCodeBitmapImage(bt),Encoding.UTF8);
 
            this.TxtContent.Text = decodedString;
 
        }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
带动态背景图的二维码生成器
BitQR-Code Through image generate QR-Code . 一个优雅的 QR 二维码生成器 Github项目地址 : https://github.com/CasterWx/BitQR-Code 样例 拿起你的手机扫描下面的二维码试试吧! 原图 Version-3 .
2620 0
FreeMarker之根据模型生成HTML代码
FreeMarker之根据模型生成HTML代码与FreeMarker根据模型生成Java代码,本质上是一样的,关于生成Java代码可以参考我的这篇文章:FreeMarker之根据模板生成Java代码 一、导入依赖 4.
1228 0
QRCode二维码生成方案及其在带LOGO型二维码中的应用(2)
原文:QRCode二维码生成方案及其在带LOGO型二维码中的应用(2) 续前:QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)  http://blog.csdn.net/johnsuna/article/details/8525038 首先我们来看看二维码的符号字符区域,然后再看看其编码流程。
1299 0
几行代码搞定java生成解析二维码功能
<p>最近公司要求扫描二维码和生成二维码的功能。而群里部分网友也提到了。我这里就写了一个demo,和大家分享。代码很简介,希望大家能够喜欢。</p> <p>网友表示在网上搜索了很多,发现不是代码不全,就是jar不匹配。</p> <p>我这里共享了一个zxing的2.2版本的例子,也提供了下载地址。实现代码如下:</p> <p></p> <pre name="code" class="java"
3857 0
[开源]C#二维码生成解析工具,可添加自定义Logo
原文:[开源]C#二维码生成解析工具,可添加自定义Logo   二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,中文等等。
1121 0
[开源]C#二维码生成解析工具,可添加自定义Logo
  二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,中文等等。
1897 0
Ucenter后台登陆 验证码CCCC的解决方法 无法登录解决办法
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
655 0
QRCode二维码生成方案及其在带LOGO型二维码中的应用
很多公司为商业宣传之需,常将企业LOGO加入二维码中,但如果LOGO遮挡区域足够地大,二维码就变得无法识别。那么,有没有一种办法将上述区域预先“抠空”出来(以便专门放置LOGO),而其他区域则专门来放置二维码的有效数据呢?——这就是本文想探讨的问题。
2416 0
+关注
社会主义
从.Net到iOS,在撸的道路上越走越远,工作之余经营着博客园http://www.cnblogs.com/5ishare,欢迎小伙伴(妹子更好)一起交流,谈谈人生理想。作为经常从网上索取免费资料的一员,要有回报回报的思想,也让更多的人少走弯路.
237
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载