二维码项目实例为二维码添加logo
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;
using System.IO; namespace QRCode
{
public partial class FMain : Form
{
public FMain()
{
InitializeComponent();
string[] cbversion = new string[];
for (int i = ; i <= ; i++)
{
cbversion[i] = i.ToString();
}
cbVersion.DataSource = cbversion;
cbVersion.Text = "";
cbEncoding.Text = "Byte";
cbCorrectionLevel.Text = "M"; } private void btnEncode_Click(object sender, EventArgs e)
{
string encoding = cbEncoding.Text;
string correctionLever = cbCorrectionLevel.Text;
int version = Convert.ToInt32(cbVersion.Text);
int scale;
if (!int.TryParse(txtScale.Text.Trim(), out scale))
{
MessageBox.Show("Scale必须为数字");
return;
}
string data = txtData.Text.Trim();
if (data == string.Empty)
{
MessageBox.Show("数据不能为空,请输入数据哦!");
return;
}
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();//创建一个对象
switch (encoding)//设置编码模式
{
case "Byte":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
break; case "AlphaNumeric":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
break; case "Numeric":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
break;
}
//设置编码测量度
qrCodeEncoder.QRCodeScale = scale;
//设置编码版本
qrCodeEncoder.QRCodeVersion = version;
if (correctionLever == "L")//设置编码错误纠正
{
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
}
else if (correctionLever == "M")
{
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
}
else if (correctionLever == "Q")
{
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
}
else if (correctionLever == "H")
{
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
}
qrCodeEncoder.QRCodeForegroundColor = btnQRCodeForegroundColor.BackColor;//设置二维码前景色
qrCodeEncoder.QRCodeBackgroundColor = btnQRCodeBackgroundColor.BackColor;//设置二维码背景色
Image image = qrCodeEncoder.Encode(data,Encoding.UTF8);//生成二维码图片 if (txtLogo.Text.Trim() != string.Empty)//如果有logo的话则添加logo
{
Bitmap btm = new Bitmap(txtLogo.Text);
Bitmap copyImage = new Bitmap(btm,image.Width/,image.Height/);
Graphics g = Graphics.FromImage(image);
int x = image.Width / - copyImage.Width / ;
int y = image.Height / - copyImage.Height / ;
g.DrawImage(copyImage,x,y);
}
picEncode.Image = image;
} private void btnDecode_Click(object sender, EventArgs e)
{
try
{
string decodedString = new QRCodeDecoder().decode(new QRCodeBitmapImage(new Bitmap(picEncode.Image)),Encoding.UTF8);
txtData.Text = decodedString;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void btnSave_Click(object sender, EventArgs e)//保存二维码到磁盘
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png";
sfd.Title = "保存二维码";
sfd.FileName = string.Empty;
if (picEncode.Image != null)
{
if (sfd.ShowDialog() == DialogResult.OK && sfd.FileName != "")
{
using (FileStream fs = (FileStream)sfd.OpenFile())
{
switch (sfd.FilterIndex)
{
case :
picEncode.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case :
picEncode.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case :
picEncode.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Gif);
break;
case :
picEncode.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Png);
break;
}
}
MessageBox.Show("恭喜,保存成功!");
}
}
else
{
MessageBox.Show("抱歉,没有要保存的图片哦!");
}
} private void btnPrint_Click(object sender, EventArgs e)
{ } private void btnOpen_Click(object sender, EventArgs e)//打开要选的logo文件
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png";
if (ofd.ShowDialog() == DialogResult.OK)
{
String fileName = ofd.FileName;
picEncode.Image = new Bitmap(fileName); }
} private void btnChooseLogo_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif|PNG Image|*.png";
if (ofd.ShowDialog() == DialogResult.OK)
{
txtLogo.Text = ofd.FileName;
}
} private void btnQRCodeForegroundColor_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
if (cd.ShowDialog() == DialogResult.OK)
{
btnQRCodeForegroundColor.BackColor = cd.Color;
}
} private void btnQRCodeBackgroundColor_Click(object sender, EventArgs e)
{
ColorDialog cd = new ColorDialog();
if (cd.ShowDialog() == DialogResult.OK)
{
btnQRCodeBackgroundColor.BackColor = cd.Color;
}
}
}
}
二维码项目实例为二维码添加logo的更多相关文章
- [开源]C#二维码生成解析工具,可添加自定义Logo
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- JS生成二维码,允许中文转码
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...
- Android zxing 解析二维码,生成二维码极简demo
zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...
- java--实现将文字生成二维码图片,并在中间附上logo,下方附上文字
前段时间因为工作需要,要实现将一段文字或者url生成二维码,然后中间附上logo,下方正中间附上文字的功能. 上网找了几篇教程学习了下,由于没有保存借鉴的博文链接,所以就没po上参考文章的链接啦,感谢 ...
- jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO
描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较 ...
- Android实例-实现扫描二维码并生成二维码(XE8+小米5)
相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
- [开源]C#二维码生成解析工具,可添加自定义Logo (转)
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...
- 【java】google的zxing架包生成二维码和读取二维码【可带文字和logo】
承接RC4生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...
随机推荐
- C++日志模块实现的经验之谈
以类的方式对日志模块进行封装,可创建一个单实例的接口或创建一个全局的日志对象指针,同时提供相应的对外写日志接口. 写日志的接口采用可变参数来建立,可使用va_list类型和##args参数,同时在写日 ...
- #学习笔记# VALSE 2019.01.09 朱俊彦 --- Learning to Synthesize Images, Videos, and 3D Objects
视频类型:VALSE-webinar 报告时间:2019年01月09日 报告人:MIT朱俊彦 报告题目:Learning to Synthesize Images, Videos, and 3D Ob ...
- HDU4624 Endless Spin(概率&&dp)
2013年多校的题目,那个时候不太懂怎么做,最近重新拾起来,看了一下出题人当初的解题报告,再结合一下各种情况的理解,终于知道整个大致的做法,这里具体写一下做法. 题意:给你一段长度为[1..n]的白色 ...
- SAP ABAP ALV构建动态输出列与构建动态内表(包留备用),包含操作abap元类型表及类
https://blog.csdn.net/zhongguomao/article/details/51095946
- P4199 万径人踪灭 FFT + manacher
\(\color{#0066ff}{ 题目描述 }\) \(\color{#0066ff}{输入格式}\) 一行,一个只包含a,b两种字符的字符串 \(\color{#0066ff}{输出格式}\) ...
- P1472 奶牛家谱 Cow Pedigrees
题意:问你指定二叉树有几种 1.高度为k 2.节点数为n 3.每个点的度为0或2 爆搜------->30分QAQ 首先,因为每个节点度为0或2, 所以如果n是偶数直接输出0就行了吧(嘿嘿) 如 ...
- 通过div实现arcgis自定义infowindow
通过给地图绑定缩放,单击和平移命令,实现在地图附加div标签,实现infowindow效果: /* *作者 扰扰 *自定义esri弹窗 *paramter Map地图对象 *paramter x *p ...
- kuangbin专题十六 KMP&&扩展KMP HDU4300 Clairewd’s message
Clairewd is a member of FBI. After several years concealing in BUPT, she intercepted some important ...
- Codeforces Round #526 (Div. 2) D. The Fair Nut and the Best Path 树上dp
D. The Fair Nut and the Best Path 题意:给出一张图 点有权值 边也要权值 从任意点出发到任意点结束 到每个点的时候都可以获得每个点的权值,而从边走的时候都要消耗改边的 ...
- Qt 学习之路 2(24):Qt 绘制系统简介
Qt 学习之路 2(24):Qt 绘制系统简介 豆子 2012年10月30日 Qt 学习之路 2 77条评论 Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制.整个绘图系统基于Q ...
