Среда разработки, платформа и язык программирования
Использую среду программирования 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