C#生成二维码(QR码)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#生成二维码(QR码)相关的知识,希望对你有一定的参考价值。

C#生成二维码(QR),希望给出源代码或者建议!生成和解析最好都要!谢谢!学习一下!

C# 二维码的代码:

using Spire.Barcode;

using System.Drawing;

namespace CreateQRCode

class Program

static void Main(string[] args)

//创建BarcodeSettings对象

BarcodeSettings settings = new BarcodeSettings();

//应用Key,去logo

BarcodeSettings.ApplyKey("4KRJD-1K294-JJG9Z-SNR36-3P7IU");

settings.Type = BarCodeType.QRCode;//设置条码类型为二维码       

settings.Data = "123456789";//设置二维码数据                       

settings.Data2D = "123456789";//设置显示文本

settings.ShowText = false;//设置二维码数据文本不显示

/*settings.ShowText = true;//显示数据文本

settings.ShowTextOnBottom = true;//数据文本显示在二维码底部*/

settings.QRCodeDataMode = QRCodeDataMode.Numeric;//设置数据类型为数字

settings.QRCodeECL = QRCodeECL.H;//设置二维码错误修正级别                    

settings.X = 3.0f;//设置宽度            

BarCodeGenerator generator = new BarCodeGenerator(settings);//实例化BarCodeGenerator类的对象

//生成二维码图片并保存为PNG格式

Image image = generator.GenerateImage();

image.Save("QRCode.png");

这里的实现方法借助专门的barcode生成根据spire.barcode for .net提供的类以及方法,解析二维码可以参考如下代码:

using System;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Spire.Barcode;

namespace ScanBarcode
public partial class Form1 : Form    
public Form1()

InitializeComponent();


private void btnLoadImage_Click(object sender, EventArgs e)

//加载条形码图片
Image image = Image.FromFile("Code128.png");
pictureBox1.Image = image;


private void btnReadData_Click(object sender, EventArgs e)

Bitmap bitmap = new Bitmap(pictureBox1.Image);

//识别条形码图片中的数据(BarcodeScanner类包含多个Scan重载方法,可根据自己的需求选择相应的方法)
string[] data = BarcodeScanner.Scan(bitmap, BarCodeType.Code128);

for (int i = 0; i < data.Length; i++)

this.textBox1.Text += data[i].ToString();




—End—

参考技术A 之前略有了解,都是使用QRCode_DLL.dll组件实现的,纯C#(或.net)的似乎没见过。 参考技术B 首先先装一个 ThoughtWorks.QRCode.dll;(百度下载,然后点添加引用,里面有个浏览,再添加)

然后加using 语句

using System.Windows.Forms;
using ThoughtWorks;
using ThoughtWorks.QRCode;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;

然后写方法
private void button1_Click(object sender, EventArgs e)


create_two(this.textBox1.Text);
//create_two(this.textBox2.Text);


private void create_two(string nr)

Bitmap bt;
string enCodeString = nr;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
string filename = string.Format(DateTime.Now.ToString(), "yyyymmddhhmmss")
+ ".jpg";
filename = filename.Replace(" ", "");
filename = filename.Replace(":", "");
filename = filename.Replace("-", "");
filename = filename.Replace(".", "");

bt.Save(".\\image.Png", System.Drawing.Imaging.ImageFormat.Png);
pictureBox1.Image = Image.FromFile(@".\\image.Png");

搞定啦~~~
参考技术C 用java吧,网上有一套开源的,你看看好了.....

Atitit zxing二维码qr码识别解析

 

Atitit zxing二维码qr码识别解析

 

 

 

1.1. qr码识别解析 by zxing1

1.2. 解码libqrcode.jar  2

1.3. atitit.二维码生成总结java zxing 2

 

 

1.1. qr码识别解析 by zxing

 

/AtiPlatf_ee/src/com/attilax/qrcode/qrcodex.java

 

public static String decode(String imagePath) {

String contents = null;

 

MultiFormatReader formatReader = new MultiFormatReader();

 

BufferedImage image;

try {

image = ImageIO.read(new File(imagePath));

 

// 将图像数据转换为1 bit data

LuminanceSource source = new BufferedImageLuminanceSource(image);

Binarizer binarizer = new HybridBinarizer(source);

// BinaryBitmap是ZXing用来表示1 bit data位图的类,Reader对象将对它进行解析

BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);

 

Map hints = new HashMap();

hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");

 

// 对图像进行解码

Result result = formatReader.decode(binaryBitmap, hints);

contents = result.toString();

 

System.out.println("barcode encoding format :\\t " + result.getBarcodeFormat());

} catch (IOException e) {

 

} catch (NotFoundException e) {

e.printStackTrace();

}

 

return contents;

 

 

1.2. 解码libqrcode.jar  

1.1.解码
编码lib:Qrcode_swetake.jar   (官网介绍-- http://www.swetake.com/qr/index-e.html)             
解码lib:qrcode.jar                 (官网介绍-- http://sourceforge.jp/projects/qrcode/)

qrcode.jar\\jp\\sourceforge\\qrcode - 解包大小为 77.6 KB


1.2.首先,我们先说一下二维码一共有40个尺寸。官方叫版本Version。
Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形。




    /**
     * @param args the command line arguments
     */ 
    public static void main(String[] args) { 
        QRCodeDecoderHandler handler = new QRCodeDecoderHandler(); 
        String imgPath = "c:\\\\3bf33a87e950352a5936aa0a5543fbf2b2118b59.jpg"; 
        String decoderContent = handler.decoderQRCode(imgPath,"gbk"); 
        System.out.println("解析结果如下:"); 
        System.out.println(decoderContent); 
        System.out.println("========decoder success  !!!"); 
    } 

1.3. atitit.二维码生成总结java zxing 

 

#-----zxing类库..
but zxing3.0  的类库core-3.0.jar 需要jdk7
只好zing2.2.jar ..jdk6ok..

 

 

#----com.attilax.qrcode.qrcodex.javar


public static void gene(final String content, final String path,
            final int width, final int height) {
        new tryX<Object>() {

            @Override
            public Object item(Object t) throws Exception {
                // attilax 老哇的爪子  下午5:23:26   2014511 
                   MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
                     
                     Map hints = new HashMap();
                     hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
                 
                    BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, width, height,hints);
                     File file1 = new File(path );
                     MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file1);
                return null;
            }
        }.$("");
    }    

 

Ck参考资料

}

Java利用Zxing生成二维码 - 帅星星 - 博客园.html

atitit.二维码生成总结java zxing - attilax的专栏 - 博客频道 - CSDN.NET.html

Atitit java 二维码识别 图片识别_attilax_新浪博客.html

Atitit.二维码功能的设计实践 attilax 总结 - attilaxAti - 博客园.html

 

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher 王中之王King of Kings 虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 马哈茂德  阿提拉 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

Uke部落首席大酋长,

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

奶牛科技cto ,uke 首席cto

uke波利尼西亚区大区连锁负责人,克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke汤加王国区域负责人。布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 uke终身教育学校副校长

Uke 数据库与存储标准化协会副会长 uke出版社编辑总编

Uke医院方面的创始人

 

转载请注明来源:attilax的专栏  ?http://www.cnblogs.com/attilax/

--Atiend

 

 

 

以上是关于C#生成二维码(QR码)的主要内容,如果未能解决你的问题,请参考以下文章

二维码生成原理

为啥某些 Apple Wallet 生成的 QR 码包含这么多额外的垃圾?

通过逐行从数据库中获取数据,使用 PHP/MySQL 生成 QR 码

通过在图像标签中传递链接生成 QR 码扫描仪

Atitit zxing二维码qr码识别解析

C# QR二维码DEMO