Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Сегодняшнее сообщение посвящено не одному проекту, а трем. Да, три в один день...
Мы все видели QR-коды, они встречаются на сайтах, наклейках, телевидении и даже татуировках. Несколько месяцев назад мы рассказывали о том, как использовать их в приложениях Windows Phone 7.1(5), «Window Phone 7.5, ZXing и QR-коды». Сегодня мы собираемся поговорить о трех других проектах с QR-кодами, один поможет вам создавать их, а два других предоставят иные способы их использования в приложениях Windows Phone 7.1(5).
Описание проекта
Цель проекта – создать простую в использовании полностью управляемую .Net-библиотеку, обеспечивающую работу с QR-кодами в соответствии со стандартом ISO/IEC 18004. Планировалось реализовать следующие возможности: кодирование, рендеринг (на экран, в файл и в поток), декодирование, определение и распознавание, художественные QR-коды.Цель проекта
Цель проекта – создать простую в использовании управляемую .Net-библиотеку для:
- Создания битовой матрицы QR-кода из текста – кодирование.
- Рендеринг битовой матрицы QR-кода на экран, в файл изображения или поток.
- Рендеринг так называемых «художественных» QR-кодов (см. ниже)
- Декодирование QR-кода, заданного битовой матрицей.
- Обнаружение и распознавание QR-кодов.
- Библиотека должна поддерживать Windows Phone 7 и Silverlight
Только что начат еще один проект с открытым кодом QrCode.Net на qrcodenet.codeplex.com.
Основы
Недавно я искал реализацию генератора QR-кодов на .NET. Большинство компонентов либо использовало онлайн-сервисы для генерации или распознавания QR-кода, либо реализация не была достаточно хороша для моих целей. Наиболее популярная и мощная реализация на Java пришла из отрытого проекта Google code.google.com/p/zxing под названием ZXing (Zebra Crossing => Z=Zebra + X=Cross + ing).
Там я обнаружил портирование «один в один» на С# более ранней версии. Проект сосредоточился на дополнительных возможностях и дальнейшем развитии в Java, поэтому никто не позаботился о ветке C#.
Так я решил начать этот проект QRCode.Net – qrcodenet.codeplex.com.
Сначала я продвинул вперед портирование на C# гуглевской реализации QR-кода проекта. Я написал оболочку и демонстрационное приложение, способное генерировать QR-код из набираемого текста и сохранять его в файл.
Кроме того оно содержало очень простую реализацию генерации «художественного» QR-кода. На самом высоком уровне коррекции ошибок возможно создание «художественного» QR-кода, который правильно сканируется, но содержит умышленные ошибки, чтобы сделать его более читаемым или привлекательным для человеческого глаза, например, вставить цвета, логотипы и другие фенечки в блок QR-кода.
Вот снимок работающего приложения:
И решение с последней версией (которое без проблем запустилось с первого раза);
Теперь, когда у нас есть QR-код, давайте прочитаем его…
Создание приложения для Windows Phone 7, читающего QR -код
Если у вас обновленный Windows Phone 7.5, вы могли заметить, что у него имеется прекрасная встроенная функциональность для чтения QR-кода, использующая поиск Bing Vision. После нескольких проб, я заинтересовался, как это можно использовать в приложении, и сразу же разочаровался, не найдя доступных для внешних разработчиков API, позволяющих воспользоваться этой возможностью.
После недолгих поисков, я обнаружил прекрасную библиотеку, которую можно использовать в качестве альтернативы, и построил на ее основе простой ридер. Вот основные шаги для самостоятельного создания программы:
- Создатьновыйпроект Windows Phone в Visual Studio
- Обновить манифест приложения
- Создать окно QR -ридера и область вывода
- Инструкции и переменные
- Управление навигацией
- Добавитьобработчики событий камеры
- Скачать библиотеку штрих-кодов
- Добавить библиотеку штрих-кодов в проект
- Декодировать изображение QR -кода
- Скомпилировать и развернуть
В проекте используется библиотека штрих-кодов, которую я никогда до сих пор не видел – messagingtoolkit-barcode.
Библиотека штрих-кодов MessagingToolkit Barcode это библиотека на C#,которую можно использовать в самостоятельных Windows-приложениях, приложениях ASP.NET и WP-приложениях.
Сейчас библиотека обеспечивает кодирование и декодирование следующих типов штрих-кодов:
Кодирование
- QR Code
- Data Matrix
- PDF 417
- Bookland/ISBN
- Codabar
- Code 11
- Code 128
- Code 128-A
- Code 128-B
- Code 128-C
- Code 39
- Code 39 Extended
- Code 93
- EAN-13
- EAN-8
- FIM
- Interleaved 2 of 5
- ITF-14
- LOGMARS
- MSI 2 Mod 10
- MSI Mod 10
- MSI Mod 11
- PostNet
- Standard 2 of 5
- Telepen
- UPC 2 Digit Ext.
- UPC 5 Digit Ext.
- UPC-A
- UPC-E
Декодирование
- UPC-A
- UPC-E
- EAN-8
- EAN-13
- Code 39
- Code 93
- Code 128
- QR Code
- ITF
- Codabar
- RSS-14
- Data Matrix
- PDF 417
- Aztec
Она основывается на библиотеке zxing, но имеет некоторые дополнительные возможности, которых нет в исходной библиотеке. Ее можно свободно использовать в некоммерческих целях. Чтобы иметь возможность применять ее в коммерческих проектах, пожалуйста, рассмотрите возможность сделать платеж в поддержку проекта вот здесь.
И последний, но не менее интересный третий сегодняшний проект – простой и повторно используемый управляющий элемент QR-кода, добавляющий возможности работы с QR-кодом в приложениях Windows Phone с простотой «перетащи и вставь».
Простой элемент управления для чтения QR -кодов в WindowsPhone
Существуют замечательные библиотеки, написанные или портированные на С#, которые позволяют нам, разработчикам, действовать, стоя на плечах гигантов. Вот один такой проект.
Разработчик для телефона, также являющийся энтузиастом квадратов, предложил возможность, которую я должен добавить в будущие выпуски, и обеспечил примером кода, основанном на библиотеке штрих-кодов zxing и ее портировании на Silverlight. Я начал работать над включением новых возможностей.
В процессе я осознал, что представился прекрасный случай предоставить этот простой, но полезный элемент управления сообществу разработчиков для телефона, поэтому я двинулся в этом направлении и поместил реализацию и рефакторинг этого элемента на GitHub. Его можно найти по адресу https://github.com/jeffwilcox/wpqr-control.
Особое спасибо Михаэлю Остеге (Michael Osthege – @theCake, blog) за инициативу, пример кода и поощрение.
Этот элемент замечателен:
- Поместите его на конструируемую поверхность
- Привяжите событие ScanComplete (и факультативно событие Error)
- Элемент управляет всеми базовыми манипуляциями с изображением, сканированием, инициализацией камеры и т. п.
Вот как простое приложение выглядит в действии. Элемент включает по умолчанию такие свойства как толщина и цвет рамочки вокруг кодового квадрата, использующий бросающийся в глаза цвет, который обеспечивает хороший визуальный разделитель:
Создание приложения-примера
Все что я сделал, так это перетащил элемент в проект нового приложения Windows Phone и подключил его. Вот так.
К счастью, с этими тремя проектами, информацией и ресурсами, которые они обеспечивают, добавление поддержки QR-кодов в ваши приложения должно стать гораздо проще…