Як прочитати QR код в програмі ZennoPoster

Буває дивишся на комп’ютері відео. І там замість посилання на матеріал під відео просто демонструють QR код, який містить посилання чи назву Telegram аккаунта. Приходиться згадувати де лежить телефон, сканувати QR код, і він зразу переходить по посиланні, чого можливо не хотілось робити з телефона. Тому я вирішив навчити свій ZennoPoster зчитувати інформацію з QR кодів.

Ідея в мене така – коли я побачу QR код, і захочу його прочитати – я просто натисну кнопку Print Screen на своїй клавіатурі. Після чого виберу область на екрані де знаходиться QR код. В цей момент операційна система помістить зображення в буфер обміну. Дальше я запущу на виконання проект ZennoPoster, який візьме зображення з буферу обміну, прочитає інформацію з QR кода і помістить її назад в буфер обміну. Таким чином я зможу натиснути Ctrl+V в адресному рядку браузер, тим самим вставивши одержане посилання на сайт, і при необхідності зможу на нього перейти.

Для зчитування QR кодів Google рекомендує Zebra Crossing (ZXing):
http://code.google.com/p/zxing
https://github.com/zxing/zxing – в результаті попадаю в репозиторій проєкту.
Там знаходжу посилання на репозиторій проєкту ZXing.NET – власне він мені і потрібен для написання рішення мовою C#:
https://github.com/micjahn/ZXing.Net
На стрінці знаходжу розділ з версіями:
https://github.com/micjahn/ZXing.Net/releases/tag/v0.16.9.0
Завантажую файл: ZXing.Net.0.16.9.0.zip
Всередині знаходжу версії фреймворків, вибираю 4.5 і там уже файл zxing.dll.
Копіюю цей файл бібліотеки в папку ExternalAssemblies: “C:\ZP\RU\ZennoPoster Pro\5.47.0.0\Progs\ExternalAssemblies\zxing.dll”
Тепер в проекті ZennoPoster у розділі GAS добавляю посилання на бібліотеку, вибравши її в папці ExternalAssemblies.

Тепер можна добавити блок Свій C# Код, і вставити в нього такий фрагмент коду:

string out_data = string.Empty;
try {
using (var qr = new Bitmap(System.Windows.Forms.Clipboard.GetImage())){
var scanner = new ZXing.BarcodeReader();
out_data = scanner.Decode(qr).ToString();
}
}
catch {
project.SendInfoToLog("Bad QR", true);
}

if(out_data.Length > 0) {
project.SendInfoToLog(out_data.Length.ToString(), true);
project.SendInfoToLog(out_data, true);
System.Windows.Forms.Clipboard.SetText(out_data);
}

Логіка його виконання така – зчитується зображення з буферу обміну у перемінну qr.
Результат розпізнавання QR коду поміщається в перемінну out_data.
Якщо в буфері обміну не було зображення, або на зображенні QR код не знайдено – то виводиться повідомлення в лог ZennoPoster: Bad QR.
Якщо QR код знайдено і успішно прочитано, тоді виводиться інформація в лог, і добавляється в буфер обміну.

Таким чином проблема вирішена – можна добавляти проект в ZennoPoster і використовувати його для зчитування QR кодів.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *