C# 二维码生成——QRCode
C#二维码生成,这里使用开源的ThoughtWorks.QRCode.dll库。
步骤:
1.下载ThoughtWorks.QRCode.dll库文件,并引用到项目中。
2.创建QRCodeHandler.cs二维码处理类
/// 二维码处理类
/// 创建人:杨武
/// 创建日期:2015-01-22
/// </summary>
public class QRCodeHandler
{
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="data">数据</param>
/// <param name="filePath">文件保存路径(绝对路径)</param>
/// <param name="hasLogo">二维码图标是否添加图片</param>
/// <param name="logoFilePath">图片的路径(绝对路径)</param>
/// <returns>true--成功;false--失败</returns>
public static bool CreateQRcode(string data, string filePath, bool hasLogo = false, string logoFilePath = "")
{
bool result = false;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//二维码编码(Byte、AlphaNumeric、Numeric)
qrCodeEncoder.QRCodeScale = ;//二维码尺寸(Version为0时,1:26x26,每加1宽和高各加25
qrCodeEncoder.QRCodeVersion = ;//二维码密集度0-40
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//二维码纠错能力(L:7% M:15% Q:25% H:30%)
try
{
Image card = qrCodeEncoder.Encode(data, Encoding.UTF8); using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write))
{
card.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();
} if (hasLogo)
{
AddLogo(logoFilePath, card, filePath);
} card.Dispose();
result = true;
}
catch (Exception ex)
{
result = false;
}
return result;
} /// <summary>
/// 二维码图标中添加图片
/// </summary>
/// <param name="logoFilePath">图片路径</param>
/// <param name="cord">二维码</param>
/// <param name="cardSavePath">二维码保存路径</param>
private static void AddLogo(string logoFilePath, Image cord, string cardSavePath)
{
if (string.IsNullOrWhiteSpace(logoFilePath) || cord == null || File.Exists(logoFilePath) == false)
{
return;
} using (Image copyImage = Image.FromFile(logoFilePath))
{
using (Graphics g = Graphics.FromImage(cord))
{
int x = cord.Width / - copyImage.Width / ;
int y = cord.Height / - copyImage.Height / ;
g.DrawImage(copyImage, new Rectangle(x, y, copyImage.Width, copyImage.Height), , , copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
}
cord.Save(cardSavePath);
}
}
}
3.调用
string str = "http://hao.360.cn/?src=lm&ls=n3335c8fd8f";
string filtPath = Server.MapPath("~/Images/1.jpg");
string logoFilePath = Server.MapPath("~/Images/faceIcon.png");
QRCodeHandler.CreateQRcode(str, filtPath, true, logoFilePath);
C# 二维码生成——QRCode的更多相关文章
- JavaScript二维码生成——qrcode.js
在开发中,有时候,我们需要根据不同的内容来动态生成二维码,则可以使用qrcode.js这个小插件来实现. 1.qrcode.js文件内容: (1)未压缩(qrcode.js): /** * @file ...
- .NET 二维码生成(ThoughtWorks.QRCode)
引用ThoughtWorks.QRCode.dll (源代码里有) 1.简单二维码生成及解码代码: //生成二维码方法一 private void CreateCode_Simple(string n ...
- jquery.qrcode.min.js生成二维码 通过前端实现二维码生成
主体代码: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <tit ...
- .NET 二维码生成(ThoughtWorks.QRCode)【转发jiangys】
.NET 二维码生成(ThoughtWorks.QRCode) 2015-06-21 22:19 by jiangys, 3790 阅读, 8 评论, 收藏, 编辑 引用ThoughtWorks.QR ...
- 【thinkphp5.1】 endroid/qrcode 二维码生成
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...
- jQuery生成二维码 jquery.qrcode.js
https://github.com/jeromeetienne/jquery-qrcode 1.将jquery.qrcode.min.js和jquery添加到您的网页中 <script src ...
- 二维码生成:使用 JavaScript 库QRCode.js生成二维码
QRCode.js:跨浏览器的javascript二维码生成库,支持html5的Canvas画布,没有任何依赖. Github 地址:https://github.com/davidshimjs/qr ...
- jquery二维码生成插件jquery.qrcode.js
插件描述:jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码. 转载于:http://www.jq22.com ...
- vue2.0 自定义 生成二维码(QRCode)组件
1.自定义 生成二维码组件 QRCode.vue <!-- 生成二维码 组件 --> <template> <canvas class="qrcode-canv ...
随机推荐
- leetcode380
class RandomizedSet { public: /** Initialize your data structure here. */ RandomizedSet() { } /** In ...
- leetcode537
public class Solution { public string ComplexNumberMultiply(string a, string b) { var aryA = a.Split ...
- 华为路由器pppoe拨号
一.概要 模拟pppoe 拨号 , 软件 ensp , 简单拓扑: 二.配置 1.基本环境配置 pc1 AR1 int gi 0/0/0 ip add 192.168.10.254 24 2.开始 ...
- avalon 的HTML规范
由于avalon以绑定属性实现对DOM的选择与操作,页面的美观与调试就变得至关重要.参照boostrap的HTML规范,制定如下 属性排列的规范 class (class, id, name与浏览器的 ...
- 【原】Coursera—Andrew Ng机器学习—Week 11 习题—Photo OCR
[1]机器学习管道 [2]滑动窗口 Answer:C ((200-20)/4)2 = 2025 [3]人工数据 [4]标记数据 Answer:B (10000-1000)*10 /(8*60*60) ...
- [iOS]隐藏导航栏把右滑退出操作保留
项目因为用到上面导航栏样式多变,就隐藏了导航栏自己用View代替了,但手势却不见了,后来发现问题解决.操作如下: 千万不要取消 Shows Navigation Bar 这个选项否则手势会消失 应该是 ...
- 配置python的豆瓣source
sunny@sunny-ThinkPad-T450:~$ mkdir ~/.pip sunny@sunny-ThinkPad-T450:~$ gedit ~/.pip/pip.conf [global ...
- java 蓝桥杯算法提高 矩阵乘法
思路:根据提示的内容,我们可以得到c[i][j] += a[i][k]*b[k][j],k>=0&&k<s PS:这道题本身不难,但是当我定义A[m][s] B[s][n] ...
- HQL多表查询
------------------siwuxie095 HQL 多表查询 以客户和联系人为例(一对多) 1.内连接 (1)hql 语句写法 from Customer c inner join c. ...
- IOS 获取农历方法(转)
声明:以下为使用iOS的 NSChineseCalendar 网上之前发现有人说这个方法不是完全准确,有些日期会显示的不对,本人没有验证过,也实在懒得用C++那套方法去实现. 另外我做的不过是个简单的 ...