二维码项目实例为二维码添加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生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...
随机推荐
- UIViewController+MJPopupViewController
1.MJPopupBackgroundView 1.1 MJPopupBackgroundView.h // // MJPopupBackgroundView.h // watched // // C ...
- Sql Server中常用的6个自定义函数分享
转自:http://www.jb51.net/article/56691.htm IF OBJECT_ID('DBO.DISTINCT_STR') IS NOT NULL DROP FUNCTION ...
- 软件测试就业必备知识点&自学软件测试-Dotest-2019
软件测试就业必备知识点&自学测试&教学大纲-Dotest-2019
- windwos下安装nginx(转)
1.windows下安装Nginx1.1 从nginx官网下载相应的安装包:http://nginx.org/ 1.2 建议下载 下载稳定版 1.3 解压到相应的目录,比如我是e盘 然后修改目录名 ...
- vue脚手架的搭建
另一博客地址:https://segmentfault.com/a/1190000016451376 一.基础的知识 1.html 2.js 3.css二.搭建项目过程--windows系统1.nod ...
- springboot mybatis自定义枚举enum转换
原文链接:https://blog.csdn.net/u014527058/article/details/62883573 一.概述 在利用Spring进行Web后台开发时,经常会遇到枚举类型的绑定 ...
- 「杂录」CQOI 2018 背板记
背景 经过一天天的等待,终于迎来了\(CQOI2018\),想想\(NOIp\)过后到现在,已经有了快要半年了,曾经遥遥无期,没想到时间一转眼就过去了-- 日志 \(Day0\) 因为明天就要考试了, ...
- Kibana6.x.x——执行yarn build出现的警告信息记录
Running "_build:installDependencies" task Warning: Command failed: /home/kibana_git/kibana ...
- 75th LeetCode Weekly Contest All Paths From Source to Target
Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, and re ...
- .Net默认IE版本号的两种方式
1.直接在页面的header部位meta标签中加入如下代码 <meta http-equiv="X-UA-Compatible" content="IE=8&quo ...
