admin管理员组文章数量:1568308
二维码生成
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; // support different mode
qrCodeEncoder.QRCodeScale = 1;
qrCodeEncoder.QRCodeVersion = 1.0;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; // support different mode
string qrCodeContent = "test";
Bitmap img = qrCodeEncoder.Encode(qrCodeContent);
string filePath = "c:\\qrcode.png" // support different image format
img.Save(filePath);
二维码解析
QRCodeDecoder decoder = new QRCodeDecoder();
string decodedString = decoder.decode(new QRCodeBitmapImage(new Bitmap("c:\\qrcode.png"))); // decodedStringshould be "test".
C#使用ThoughtWorks.QRCode.dll
生成二维码以及解码
最近一段时间在网上找了二维码的生成代码,但是生成的二维码右上角的背景色总是透明的,所以自己拿过来改了一下,给自己做个总结。
代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace 生成二维码
{
class QRCodeHelper
{
#region 根据内容获取二维码
/// <summary>
/// 根据内容获取二维码
/// </summary>
/// <param name="str">内容</param>
/// <returns>返回二维码图片</returns>
public static Bitmap GetQRCodeBmp(string str)
{
try
{
QRCodeEncoder qRCodeEncoder = new QRCodeEncoder();//实例化二维码对象
qRCodeEncoder.QRCodeBackgroundColor = Color.White;//设置二维码背景颜色
qRCodeEncoder.QRCodeForegroundColor = Color.Black;//设置二维码前景色
qRCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//设置二维码编码类型
qRCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//设置二维码拍错率
qRCodeEncoder.QRCodeScale = 4;//设置二维码的大小
qRCodeEncoder.QRCodeVersion = 7;//设置二维码的版本
Bitmap bmp = qRCodeEncoder.Encode(str);
//对二维码进行重绘
Bitmap bitmap = new Bitmap(bmp.Width + 3, bmp.Height + 3);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.White);
g.DrawRectangle(new Pen(Color.White), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
g.DrawImage(bmp, new PointF(2, 2));
return bitmap;
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 对二维码图片进行处理
/// </summary>
/// <param name="QrImg">二维码</param>
/// <returns>处理过后的二维码</returns>
public Bitmap RedrawQrImg(Bitmap QrImg)
{
Bitmap bitmap = new Bitmap(QrImg.Width + 3, QrImg.Height + 3);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(Color.White);
g.DrawRectangle(new Pen(Color.White), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
g.DrawImage(QrImg, new PointF(2, 2));
return bitmap;
}
/// <summary>
/// 二维码解码
/// </summary>
/// <param name="filePath">图片路径</param>
/// <returns></returns>
public static string CodeDecoder(string filePath)
{
try
{
if (!System.IO.File.Exists(filePath))
return null;
Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));
QRCodeDecoder decoder = new QRCodeDecoder();
string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
return decodedString;
}
catch (Exception)
{
return null;
}
}
#endregion
}
}
使用
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebDemo
{
public partial class QRTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bmap= QRCodeHelper.GetQRCodeBmp("WWW.QQ");
bmap.Save(Server.MapPath("~/Img/saved.png"));
string fullpath = Server.MapPath("~/Img/ewm.png");
string resultstr = QRCodeHelper.CodeDecoder(fullpath);
Response.Write(resultstr);
}
}
}
如图
本文标签: 二维码thoughtworksQRcode
版权声明:本文标题:二维码生成与解析(使用ThoughtWorks.QRCode) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1726875906a1088346.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论