Как стать автором
Поиск
Написать публикацию
Обновить

Разработка простой программы по созданию QR-кодов

Среда разработки, платформа и язык программирования


Использую среду программирования Visual Studio 2013, платформа .net framework 4.5, язык программирования C# 5.0.

Используемая сборка


Сборка zxing.dll. ZXing — это библиотека, которая поддерживает декодирование и генерирование штриховых кодов и других кодов. Библиотеку можно скачать по адресу: zxingnet.codeplex.com/downloads/get/824664

Просмотр пространств имён


Содержимое сборки zxing.dll, можно просмотреть с помощью Обозревателя объектов в Visual Studio.



Текст консольного приложения


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

using ZXing;
using ZXing.Common;
using ZXing.QrCode;

namespace QR_ZXing
{
    class Program
    {
        static void Main(string[] args)
        {
            QRCodeWriter qrEncode = new QRCodeWriter(); //создание QR кода

            string strRUS = "Привет, мир";  //строка на русском языке

            Dictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();    //для колекции поведений
            hints.Add(EncodeHintType.CHARACTER_SET, "utf-8");   //добавление в коллекцию кодировки utf-8
            BitMatrix qrMatrix = qrEncode.encode(   //создание матрицы QR
                strRUS,                 //кодируемая строка
                BarcodeFormat.QR_CODE,  //формат кода, т.к. используется QRCodeWriter применяется QR_CODE
                300,                    //ширина
                300,                    //высота
                hints);                 //применение колекции поведений

            BarcodeWriter qrWrite = new BarcodeWriter();    //класс для кодирования QR в растровом файле
            Bitmap qrImage = qrWrite.Write(qrMatrix);   //создание изображения
            qrImage.Save("1.bmp", System.Drawing.Imaging.ImageFormat.Bmp);//сохранение изображения

            BarcodeReader qrDecode = new BarcodeReader(); //чтение QR кода
            Result text = qrDecode.Decode((Bitmap)Bitmap.FromFile("1.bmp")); //декодирование растрового изображения
            Console.WriteLine(text.Text);   //вывод результата
        }
    }
}

Проблема всех существующих библиотек — поддержка кириллицы. В данной библиотеке я использовал единственное решение данной проблемы:

Dictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();    //для колекции поведений
hints.Add(EncodeHintType.CHARACTER_SET, "utf-8");   //добавление в коллекцию кодировки utf-8
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.