C#利用QrCode.Net生成二維碼(Qr碼)


在網上很多應用都是用二維碼來分享網址或者其它的信息。尤其在移動領域,二維碼更是有很大的應用場景。因為項目的需要,需要在網站中增加一個生成二維碼分析網址的功能,在谷歌大幅度抽筋的情況下無奈使用百度。百度N多,找到一些項目,但是可用性不強。(有一個項目是用VS2005開發的,在2010中調試不開。)終於在codeplex上找到一個“神器”,這個“神器”可以很方便的生成二維碼,速度那是相當的快,並且可支持中文,遵從MIT協議。

QrCode.Net是一個使用C#編寫的用於生成二維碼圖片的類庫,使用它可以非常方便的為WinForm、WebForm、WPF、Silverlight和Windows Phone 7應用程序提供二維碼編碼輸出功能。可以將二維碼文件導出為eps格式。

項目地址為:http://qrcodenet.codeplex.com

QrCode.Net不再采用http://code.google.com/p/zxing/ ZXing的端口,新的版本將有更好的性能。

測試結果如下(微秒):

輸入字符串長度:74個

EC performance 1000 Tests~ QrCode.Net: 3929 ZXing: 5221

同時,QrCode.Net可以對字符串進行分析,決定是否使用UTF-8編碼。(比如使用中文的時候。)

1.Graphics

        //const string str = "Hello World!";
        const string str = "http://www.weilanwu.com";
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            ShowCode(e.Graphics);
        }

        //在Graphics上繪制二維碼
        private void ShowCode(Graphics g)
        {
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);

            QrCode qrCode = qrEncoder.Encode(str);
            FixedModuleSize moduleSize = new FixedModuleSize(2, QuietZoneModules.Two);
            GraphicsRenderer render = new GraphicsRenderer(moduleSize, Brushes.Black, Brushes.White);
            render.Draw(g, qrCode.Matrix);
        }

顯示結果:

2.生成到圖片

        /*
         * FixedModuleSize---5-----165*165
         * FixedModuleSize---4-----132*132
         * FixedModuleSize---3-----99*99
         * FixedModuleSize---2-----66*66
         * FixedModuleSize---1-----33*33
         */
        //直接把二維碼 保存到文件
        private void SaveCodeFile()
        {
            QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H);
            QrCode code = new QrCode();
            qrEncoder.TryEncode(str, out code);
            const int modelSizeInPixels = 4;

            GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(modelSizeInPixels, QuietZoneModules.Two)
                , Brushes.Black, Brushes.White);

            string filename = LocalPathHelper.DesktopPath + "/one.png";
            using (FileStream stream = new FileStream(filename, FileMode.Create))
            {
                render.WriteToStream(code.Matrix, ImageFormat.Png, stream);
            }
        }

顯示結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM