Example #1
0
        private void OptimalSegmentCode()
        {
            var segments = QrSegmentAdvanced.MakeSegmentsOptimally(Text1, QrCode.Ecc.High);
            var qrCode   = QrCode.EncodeSegments(segments, QrCode.Ecc.High);

            Assert.Same(QrCode.Ecc.High, qrCode.ErrorCorrectionLevel);
            Assert.Equal(29, qrCode.Size);
            Assert.Equal(2, qrCode.Mask);
            Assert.Equal(Modules1, TestHelper.ToStringArray(qrCode));
        }
Example #2
0
        public static void GenerateQrCode(string text, string file)
        {
            var qrSegment = QrSegment.MakeBytes(Encoding.UTF8.GetBytes(text));
            var qrCode    = QrCode.EncodeSegments(new List <QrSegment>()
            {
                qrSegment
            }, QrCode.Ecc.Low, 10, 40, 0, false);
            var qrCodePng = new QrCodePng(qrCode, 5, 5);

            File.WriteAllBytes(file, qrCodePng.GetBytes());
        }
Example #3
0
        public void KanjiQrCode()
        {
            var segment  = QrSegmentAdvanced.MakeKanji(KanjiText);
            var segments = new List <QrSegment> {
                segment
            };
            var qrCode = QrCode.EncodeSegments(segments, QrCode.Ecc.Medium);

            Assert.Same(QrCode.Ecc.Medium, qrCode.ErrorCorrectionLevel);
            Assert.Equal(25, qrCode.Size);
            Assert.Equal(2, qrCode.Mask);
            Assert.Equal(KanjiModules, TestHelper.ToStringArray(qrCode));
        }
Example #4
0
        // Creates QR Codes with manually specified segments for better compactness.
        private static void DoSegmentDemo()
        {
            QrCode           qr;
            List <QrSegment> segs;

            // Illustration "silver"
            var silver0 = "THE SQUARE ROOT OF 2 IS 1.";
            var silver1 = "41421356237309504880168872420969807856967187537694807317667973799";

            qr = QrCode.EncodeText(silver0 + silver1, Ecc.Low);
            WritePng(qr.ToImage(10, 3), "sqrt2-monolithic-QR.png");

            segs = new List <QrSegment>()
            {
                QrSegment.MakeAlphanumeric(silver0),
                QrSegment.MakeNumeric(silver1)
            };
            qr = QrCode.EncodeSegments(segs, Ecc.Low);
            WritePng(qr.ToImage(10, 3), "sqrt2-segmented-QR.png");

            // Illustration "golden"
            var golden0 = "Golden ratio φ = 1.";
            var golden1 = "6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374";
            var golden2 = "......";

            qr = QrCode.EncodeText(golden0 + golden1 + golden2, Ecc.Low);
            WritePng(qr.ToImage(8, 5), "phi-monolithic-QR.png");

            segs = new List <QrSegment>()
            {
                QrSegment.MakeBytes(Encoding.UTF8.GetBytes(golden0)),
                QrSegment.MakeNumeric(golden1),
                QrSegment.MakeAlphanumeric(golden2)
            };
            qr = QrCode.EncodeSegments(segs, Ecc.Low);
            WritePng(qr.ToImage(8, 5), "phi-segmented-QR.png");

            // Illustration "Madoka": kanji, kana, Cyrillic, full-width Latin, Greek characters
            var madoka = "「魔法少女まどか☆マギカ」って、 ИАИ desu κα?";

            qr = QrCode.EncodeText(madoka, Ecc.Low);
            WritePng(qr.ToImage(9, 4), "madoka-utf8-QR.png");

            segs = new List <QrSegment>()
            {
                QrSegmentAdvanced.MakeKanji(madoka)
            };
            qr = QrCode.EncodeSegments(segs, Ecc.Low);
            WritePng(qr.ToImage(9, 4), "madoka-kanji-QR.png");
        }
Example #5
0
        // Creates QR codes with the same size and contents but different mask patterns.
        private static void DoMaskDemo()
        {
            // Project Nayuki URL
            var segs = QrSegment.MakeSegments("https://www.nayuki.io/");
            var qr   = QrCode.EncodeSegments(segs, QrCode.Ecc.High);

            SaveAsPng(qr, "project-nayuki-automask-QR.png", 8, 6);
            qr = QrCode.EncodeSegments(segs, QrCode.Ecc.High, QrCode.MinVersion, QrCode.MaxVersion, 3);          // Force mask 3
            SaveAsPng(qr, "project-nayuki-mask3-QR.png", 8, 6);

            // Chinese text as UTF-8
            segs = QrSegment.MakeSegments("維基百科(Wikipedia,聆聽i/ˌwɪkᵻˈpiːdi.ə/)是一個自由內容、公開編輯且多語言的網路百科全書協作計畫");
            qr   = QrCode.EncodeSegments(segs, QrCode.Ecc.Medium, QrCode.MinVersion, QrCode.MaxVersion, 0);        // Force mask 0
            SaveAsPng(qr, "unicode-mask0-QR.png", 10, 3);
            qr = QrCode.EncodeSegments(segs, QrCode.Ecc.Medium, QrCode.MinVersion, QrCode.MaxVersion, 1);          // Force mask 1
            SaveAsPng(qr, "unicode-mask1-QR.png", 10, 3);
            qr = QrCode.EncodeSegments(segs, QrCode.Ecc.Medium, QrCode.MinVersion, QrCode.MaxVersion, 5);          // Force mask 5
            SaveAsPng(qr, "unicode-mask5-QR.png", 10, 3);
            qr = QrCode.EncodeSegments(segs, QrCode.Ecc.Medium, QrCode.MinVersion, QrCode.MaxVersion, 7);          // Force mask 7
            SaveAsPng(qr, "unicode-mask7-QR.png", 10, 3);
        }
Example #6
0
        // Creates QR Codes with the same size and contents but different mask patterns.
        private static void DoMaskDemo()
        {
            QrCode           qr;
            List <QrSegment> segs;

            // Project Nayuki URL
            segs = QrSegment.MakeSegments("https://www.nayuki.io/");
            qr   = QrCode.EncodeSegments(segs, Ecc.High, QrCode.MIN_VERSION, QrCode.MAX_VERSION, -1, true); // Automatic mask
            WritePng(qr.ToImage(8, 6), "project-nayuki-automask-QR.png");
            qr = QrCode.EncodeSegments(segs, Ecc.High, QrCode.MIN_VERSION, QrCode.MAX_VERSION, 3, true);    // Force mask 3
            WritePng(qr.ToImage(8, 6), "project-nayuki-mask3-QR.png");

            // Chinese text as UTF-8
            segs = QrSegment.MakeSegments("維基百科(Wikipedia,聆聽i/ˌwɪkᵻˈpiːdi.ə/)是一個自由內容、公開編輯且多語言的網路百科全書協作計畫");
            qr   = QrCode.EncodeSegments(segs, Ecc.Medium, QrCode.MIN_VERSION, QrCode.MAX_VERSION, 0, true); // Force mask 0
            WritePng(qr.ToImage(10, 3), "unicode-mask0-QR.png");
            qr = QrCode.EncodeSegments(segs, Ecc.Medium, QrCode.MIN_VERSION, QrCode.MAX_VERSION, 1, true);   // Force mask 1
            WritePng(qr.ToImage(10, 3), "unicode-mask1-QR.png");
            qr = QrCode.EncodeSegments(segs, Ecc.Medium, QrCode.MIN_VERSION, QrCode.MAX_VERSION, 5, true);   // Force mask 5
            WritePng(qr.ToImage(10, 3), "unicode-mask5-QR.png");
            qr = QrCode.EncodeSegments(segs, Ecc.Medium, QrCode.MIN_VERSION, QrCode.MAX_VERSION, 7, true);   // Force mask 7
            WritePng(qr.ToImage(10, 3), "unicode-mask7-QR.png");
        }