一.使用C#生成二维码类库之一是qrcodenet
源代码地址:
http://qrcodenet.codeplex.com/
二.使用实例
定义处理字符串
static string url = "http://blog.csdn.net/u011127019";
1.实例1
//生成二维码
static void Generate1()
{
//创建二维码生成类
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode(url);
//输出显示在控制台
for (int j = ; j < qrCode.Matrix.Height; j++)
{
for (int i = ; i < qrCode.Matrix.Width; i++)
{
char charToPoint = qrCode.Matrix[i, j] ? '█' : ' ';
Console.Write(charToPoint);
}
Console.WriteLine();
}
}
2.生成二维码,保存成图片
//生成图片
static void Generate2()
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode(url);
//保存成png文件
string filename = @"H:\桌面\截图\url.png";
GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(, QuietZoneModules.Two), Brushes.Black, Brushes.White);
using (FileStream stream = new FileStream(filename, FileMode.Create))
{
render.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream);
}
}
3.支持中文
//生成中文二维码
static void Generate3()
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode("我是小天马");
//保存成png文件
string filename = @"H:\桌面\截图\cn.png";
GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(, QuietZoneModules.Two), Brushes.Black, Brushes.White); Bitmap map = new Bitmap(, );
Graphics g = Graphics.FromImage(map);
g.FillRectangle(Brushes.Red, , , , );
render.Draw(g, qrCode.Matrix, new Point(, ));
map.Save(filename, ImageFormat.Png);
}
4.调整二维码大小
//设置二维码大小
static void Generate4()
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode("我是小天马");
//保存成png文件
string filename = @"H:\桌面\截图\size.png";
//ModuleSize 设置图片大小
//QuietZoneModules 设置周边padding
/*
* 5----150*150 padding:5
* 10----300*300 padding:10
*/
GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(, QuietZoneModules.Two), Brushes.Black, Brushes.White); Point padding = new Point(, );
DrawingSize dSize = render.SizeCalculator.GetSize(qrCode.Matrix.Width);
Bitmap map = new Bitmap(dSize.CodeWidth + padding.X, dSize.CodeWidth + padding.Y);
Graphics g = Graphics.FromImage(map);
render.Draw(g, qrCode.Matrix, padding);
map.Save(filename, ImageFormat.Png);
}
5.生成带Logo的二维码
//生成带Logo的二维码
static void Generate5()
{
QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);
QrCode qrCode = qrEncoder.Encode("我是小天马");
//保存成png文件
string filename = @"H:\桌面\截图\logo.png";
GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(, QuietZoneModules.Two), Brushes.Black, Brushes.White); DrawingSize dSize = render.SizeCalculator.GetSize(qrCode.Matrix.Width);
Bitmap map = new Bitmap(dSize.CodeWidth, dSize.CodeWidth);
Graphics g = Graphics.FromImage(map);
render.Draw(g, qrCode.Matrix);
//追加Logo图片 ,注意控制Logo图片大小和二维码大小的比例
Image img = Image.FromFile(@"F:\JavaScript_Solution\QrCode\QrCode\Images\101.jpg"); Point imgPoint = new Point((map.Width - img.Width) / , (map.Height - img.Height) / );
g.DrawImage(img, imgPoint.X, imgPoint.Y, img.Width, img.Height);
map.Save(filename, ImageFormat.Png);
}