二维码项目实例为二维码添加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生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...
随机推荐
- AttributeError: ‘module’ object has no attribute ‘ximgproc’(OpenCV)
问题描述: 使用opecv实现选择性搜索(selective search)的时候,执行如下代码时报了上述标题的错误. “ss = cv2.ximgproc.segmentation.createSe ...
- Python学习第三方库Requests: 让 HTTP 服务人类
转自官方文档:http://cn.python-requests.org/zh_CN/latest/ 快速上手 http://cn.python-requests.org/zh_CN/latest/u ...
- 小程序开发笔记【二】,抽奖结果json数据拼装bug解决
抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ...
- linux进程切换问题
#define switch_to(prev,next,last) do { \ unsigned long esi,edi; \ asm volatile("pushfl\n\t" ...
- 封装下Excel导出
1. 使用方法 1.1 对象使用注解 @ExcelColumn(name = "页面1",freeze = "0,1,1,2",autoWidth=true) ...
- 【Leetcode】Permutation Sequence
The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...
- SwiftMailer 发送邮件时 提示fsockopen() 被禁用
站点转移空间,发送邮件的SwiftMailer 类提示错误如下: Warning: fsockopen() has been disabled for security reasons in D:\1 ...
- 使用Mybatis-plus发生org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
容我慢慢说来,之前是使用springboot+mybatis.我一直采用xml配置文件写sql. 后来采用了mybatis-plus之后,在本地上面测试没有一点问题.一放到服务器就发生这种情况 在本地 ...
- Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建
一.Redis的持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化. Redis支持两种 ...
- spring 配置 junit
package cn.hefen.mall.app; import cn.hefen.mall.app.model.ResultMap; import cn.hefen.mall.app.model. ...