ThoughtWorks.QRCode очень удобен в использовании, но эта библиотека классов не поддерживает стандартные библиотеки.
Поэтому я сделал стандартную версию через декомпиляцию dll и добавил зависимость от System.Drawing.Common.
Кроме того, я обнаружил, что при анализе длинных данных или QRCodeVersion >= 30 возникает исключение.
Я исправил это, используя автоматическую версию QRCodeVersion, то есть это свойство не нужно устанавливать, см. пример использования.
Автор haoersheng не оставил контактную информацию, если есть нарушение авторских прав, пожалуйста, свяжитесь со мной для удаления!!!
Пример использования
using System.Drawing;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace CommonUtils
{
/// <summary>
/// Инструменты для работы с двумерными кодами
/// </summary>
public static class QrCodeUtil
{
/// <summary>
/// Возвращает изображение двумерного кода
/// </summary>
public static Bitmap Encode(string text)
{
var qrCodeEncoder = new QRCodeEncoder();
//qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
//qrCodeEncoder.QRCodeScale = 4;
//qrCodeEncoder.QRCodeVersion = 29;
//qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
return qrCodeEncoder.Encode(text);
}
/// <summary>
/// Определяет параметры и генерирует двумерный код
/// </summary>
public static void Create(string text, string path)
=> Encode(text).Save(path);
/// <summary>
/// Возвращает строку, определённую двумерным кодом
/// </summary>
public static string Decode(Bitmap image)
{
var qrCodeBitmapImage = new QRCodeBitmapImage(image);
var qrCodeDecoder = new QRCodeDecoder();
return qrCodeDecoder.decode(qrCodeBitmapImage);
}
/// <summary>
/// Возвращает строку, определённую двумерным кодом
/// </summary>
public static string Decode(string path)
=> Decode(new Bitmap(path));
}
}
var path = "D:/" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
var qr = QrCodeUtil.Encode("Hello World!");
qr.Save(path);
Console.WriteLine(QrCodeUtil.Decode(qr));
path = "D:/" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png";
QrCodeUtil.Create("中国智造,惠及全球!", path);
Console.WriteLine(QrCodeUtil.Decode(path));
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
Исходный код
https://gitee.com/atalent/ThoughtWorks.QRCode
Просмотр
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )