Генерируем QR-код в своих приложениях.
Генерируем QR код с помощью Chart Google API
Вариант # 2.
У второго варианта есть большее преимущество, нам не придётся линковать и инклудить никакие библиотеки, воспользуемся средствами Chart Google API, документация на который лежит тут — ССЫЛКА
Чтобы создавать QR коды с помощью сего средства нам нужно знать как строится POST и GET запрос. Тех кто не в курсе что это вообще такое, можно прочитать вот эту статью — POST и GET запросы в Indy (Delphi) Часть 1 и главное узнать саму суть, хотя бы понимать какими символами и как отделяются параметры в QUERY_STRING.
Что нам написал гугл в своей документации ? Он говорит — шлите ваш запрос на этот скрипт -
Root URL: https://chart.googleapis.com/chart?
Вы ведь в курсе про то как строятся запросы ? Окей, тогда вы должны знать что после знака вопроса начинают идти переменные и их значения, идущие через знак равенства, который в данном контексте означает присвоение. Между собой пары переменная=значение соединяются символом &
Читаем документацию дальше и смотрим чего от нас требует гугл.
cht=qr | Required | Specifies a QR code.
Видите слово Required ? Это означает что параметр обязательный и пропускать его нельзя. Так, значит чтобы скрипт понял что мы хотим получить QR код, мы должны отправить параметр cht со значением qr, в итоге наш запрос сейчас уже выглядит так:
https://chart.googleapis.com/chart?cht=qr
Смотрим дальше:
chs=<width>x<height>
| Required | Image size.
Окей, значит этим параметром мы указываем гуглу на высоту и ширину QR кода, который мы хотим получить, дополняем наш запрос:
https://chart.googleapis.com/chart?cht=qr
&chs=200x200
Как вы поняли, мы получим QR код размером 200 на 200 пикселей. Кстати … вы уже можете впихнуть этот запрос в браузер и получить готовый QR код. Вот только никакой информации в нем пока ещё нет. Смотрим дальше документацию, а там идёт последний обязательный параметр.
chl=<data>
| Required | The data to encode. Data can be digits (0-9), alphanumeric characters, binary bytes of data, or Kanji. You cannot mix data types within a QR code. The data must be UTF-8 URL-encoded. Note that URLs have a 2K maximum length, so if you want to encode more than 2K bytes (minus the other URL characters), you will have to send your data using POST.
В общем гугл тут напоминает о том, что послать GET запрос длинной более 2 К не получится, т.к. длина гет запросов ограничена и если нужно послать строку длиннее, то нужно использовать POST запрос. Но нам для наших нужд GET запроса бооооолее чем хватит.
https://chart.googleapis.com/chart?cht=qr
&chs=200x200
&chl=
http://blogee.ru
Можете отправить этот запрос в браузерной строке и получите код, затем картинку можно сохранить и декодировать на этом сайте —http://www.decodeit.ru/qr/ просто убедиться что информация закодирована верно.
Помните в первой части статьи мы говорили про уровни коррекции ошибок ? Они есть и здесь:
chld=<error_correction_level>|<margin>
https://chart.googleapis.com/chart?cht=qr
&chs=200x200
&chl=
http://blogee.ru&chld=
H
Предсказываю ваш следующий вопрос, «Эй, откуда такие большие рамки вокруг QR кода ? Неужели нельзя на это повлиять ?». Можно, смотрим переменную параметра — chld=<error_correction_level>|<margin>
. Видите вот такой символ — | ? Через него можно задать марджины или отступы или бордеры для нашего QR кода. Генерируем QR код ещё раз, но уже с марджинами:
https://chart.googleapis.com/chart?cht=qr
&chs=200x200
&chl=
http://blogee.ru&chld=
H|1
И да, не забываем о том, что margin считается не в пикселях, а в модулях. По умолчанию гугл делает margin в 4 модуля.
И последний параметр — choe=<output_encoding>
- гугл интересует как мы хотим кодировать данные в QR коде, есть 3 варианта: UTF-8
[Default], Shift_JIS,
ISO-8859-1
Как вы поняли, кодировкой по умолчанию является UTF-8 и если вас это устраивает, то в запросе её можно не указывать.
Для Delphi, впрочем и для других языков, данная реализация будет выглядеть на 100 % идентично, пример — idhttp1.get(‘https://chart.googleapis.com/chart?cht=qr&chs=200×200&chl=http://blogee.ru&chld=H|1′);
В общем генерируем QR код абсолютно так же.
Ну а как вывести картинку в браузере я думаю и так всем понятно:
<img src=»https://chart.googleapis.com/chart?cht=qr&chs=200×200&chl=http://blogee.ru&chld=H|1″ alt=»QR код blogee.ru»/>
QR-код экскурсия в музее-панораме «Сталинградская битва» Об электронных услугах ФНС России расскажут QR-коды Кладбища в Японии Петербургские остановки предлагают оснастить транспортными QR-кодами Визитка-тату QR-коды помогут совершать экскурсию по историческим местам Улан-Удэ QR-код защищает велосипеды немецких студентов от угона Media Markt открывает виртуальную торговлю в московском метро В центре Нижнего Новгорода появились странные знаки Новая марка из серии «XXI Олимпийские игры в Сочи»
Обратная связь