概述
第一种比较直接点
C#中直接引用ThoughtWorks.QRCode.dll 类,
ThoughtWorks.QRCode.Codec.QRCodeEncoder encoder = new QRCodeEncoder();
encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;//编码方法
encoder.QRCodeScale = 4;//大小
encoder.QRCodeVersion = 4;//版本
encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
String qrdata = "二维码信息";
System.Drawing.Bitmap bp = encoder.Encode(qrdata.ToString(), Encoding.GetEncoding("GB2312"));
Image image = bp;
Object oMissing = System.Reflection.Missing.Value;
pictureBox1.Image = bp;
保存二维码图片:
SaveFileDialog sf = new SaveFileDialog();
sf.Title = "选择保存文件位置";
sf.Filter = "保存图片(*.jpg) |*.jpg|所有文件(*.*) |*.*";
//设置默认文件类型显示顺序
sf.FilterIndex = 1;
//保存对话框是否记忆上次打开的目录
sf.RestoreDirectory = true;
if (sf.ShowDialog() == DialogResult.OK)
{
Image im = this.pictureBox1.Image;
//获得文件路径
localFilePath = sf.FileName.ToString();
if (sf.FileName != "")
{
fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\") + 1);//获取文件名,不带路径
// newFileName = fileNameExt+DateTime.Now.ToString("yyyyMMdd")
;//给文件名后加上时间
FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("."));
//获取文件路径,带文件名,不带后缀
string fn = sf.FileName;
pictureBox1.Image.Save(FilePath +"-"+ DateTime.Now.ToString("yyyyMMdd") + ".jpg");
}
}
//解析二维码信息
// QRCodeDecoder decoder = new QRCodeDecoder();
//
String decodedString = decoder.decode(new QRCodeBitmapImage(new Bitmap(pictureBox1.Image)));
//this.label3.Text = decodedString;
System.Drawing.Bitmap bp = encoder.Encode(qrdata.ToString(), Encoding.GetEncoding("GB2312"));
保存二维码图片:
SaveFileDialog sf = new SaveFileDialog();
}
第二种,反正我是没有下载成功,网站总进不去
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。
首先,在其官网http://code.google.com/p/zxing/上去下载源码
编译在其csharp目录下打开zxing.csproj文件,新建一个工程。在编译之前修改两个错误:
源代码中有两处UTF-8的问题,会导致乱码,
其一:com.google.zxing.qrcode.encoder.encoder类中的
internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";
此处,将ISO-8859-1改为UTF-8
其二:com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的成员
private const System.String UTF8 = "UTF8";
应将UTF8改为UTF-8
修改完之后,点重新生成编译出新的dll文件。
将zxing.dll考入到你自己所需要的工程中,并添加引用。
这样自己就可以试用了,主要是二维码的生成和识别两个用处:
- using com.google.zxing.qrcode;
- using com.google.zxing;
- using com.google.zxing.common;
- using ByteMatrix = com.google.zxing.common.ByteMatrix;
- using EAN13Writer = com.google.zxing.oned.EAN13Writer;
- using EAN8Writer = com.google.zxing.oned.EAN8Writer;
- using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
- private void button1_Click(object sender, EventArgs e)
- {
- string content = textBox1.Text;
- ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200);
- Bitmap bitmap = toBitmap(byteMatrix);
- pictureBox1.Image = bitmap;
- //writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
- //SaveFileDialog sFD = new SaveFileDialog();
- //sFD.DefaultExt = "*.png|*.png";
- //sFD.AddExtension = true;
- //try
- //{
- // if (sFD.ShowDialog() == DialogResult.OK)
- // {
- // }
- //}
- //catch (Exception ex)
- //{
- // MessageBox.Show(ex.Message);
- //}
- }
- public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
- {
- Bitmap bmap = toBitmap(matrix);
- bmap.Save(file, format);
- }
- public static Bitmap toBitmap(ByteMatrix matrix)
- {
- int width = matrix.Width;
- int height = matrix.Height;
- Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
- for (int x = 0; x < width; x++)
- {
- for (int y = 0; y < height; y++)
- {
- bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
- }
- }
- return bmap;
- }
using com.google.zxing.qrcode;
using com.google.zxing;
using com.google.zxing.common;
using ByteMatrix = com.google.zxing.common.ByteMatrix;
using EAN13Writer = com.google.zxing.oned.EAN13Writer;
using EAN8Writer = com.google.zxing.oned.EAN8Writer;
using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
private void button1_Click(object sender, EventArgs e)
{
string content = textBox1.Text;
ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200);
Bitmap bitmap = toBitmap(byteMatrix);
pictureBox1.Image = bitmap;
//writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
//SaveFileDialog sFD = new SaveFileDialog();
//sFD.DefaultExt = "*.png|*.png";
//sFD.AddExtension = true;
//try
//{
// if (sFD.ShowDialog() == DialogResult.OK)
// {
// }
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
//}
}
public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
{
Bitmap bmap = toBitmap(matrix);
bmap.Save(file, format);
}
public static Bitmap toBitmap(ByteMatrix matrix)
{
int width = matrix.Width;
int height = matrix.Height;
Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF"));
}
}
return bmap;
}
二维码的读取识别:
- private void button1_Click(object sender, EventArgs e)
- {
- if (this.openFileDialog1.ShowDialog() != DialogResult.OK)
- {
- return;
- }
- Image img = Image.FromFile(this.openFileDialog1.FileName);
- Bitmap bmap;
- try
- {
- bmap = new Bitmap(img);
- }
- catch (System.IO.IOException ioe)
- {
- MessageBox.Show(ioe.ToString());
- return;
- }
- if (bmap == null)
- {
- MessageBox.Show("Could not decode image");
- return;
- }
- LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height);
- com.google.zxing.BinaryBitmap bitmap = new com.google.zxing.BinaryBitmap(new COMMON.HybridBinarizer(source));
- Result result;
- try
- {
- result = new MultiFormatReader().decode(bitmap);
- }
- catch(ReaderException re)
- {
- MessageBox.Show(re.ToString());
- return;
- }
- MessageBox.Show(result.Text);
- }
最后
以上就是危机蜗牛为你收集整理的C# 生成二维码 两种方式ThoughtWorks.QRCode ZXing的全部内容,希望文章能够帮你解决C# 生成二维码 两种方式ThoughtWorks.QRCode ZXing所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复