7 gs1 qr code: различия между версиями

Новая страница: «======= GS1 QR Code ======= Символы символики GS1 QR Code являются подмножеством символики QR Code по ISO/IEC 18004. Символика QR Code поддерживает структуры данных Системы GS1. Внедрение GS1 QR Code должно соответствовать стандартам по применению Системы GS1. Символы QR Code применяют для...»
 
Нет описания правки
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
======= GS1 QR Code =======
====== GS1 QR Code ======


Символы символики GS1 QR Code являются подмножеством символики QR Code по ISO/IEC 18004. Символика QR Code поддерживает структуры данных Системы GS1. Внедрение GS1 QR Code должно соответствовать стандартам по применению Системы GS1. Символы QR Code применяют для кодирования дополнительной информации к информации на упаковке. Кодируется алфавитно-цифровая информация, байтовая информация в соответствии с ISO/IEC 8859-1.
Символы символики GS1 QR Code являются подмножеством символики QR Code по ISO/IEC 18004. Символика QR Code поддерживает структуры данных Системы GS1. Внедрение GS1 QR Code должно соответствовать стандартам по применению Системы GS1. Символы QR Code применяют для кодирования дополнительной информации к информации на упаковке. Кодируется алфавитно-цифровая информация, байтовая информация в соответствии с ISO/IEC 8859-1.
Строка 5: Строка 5:
[[File:12_код.png]]
[[File:12_код.png]]


<syntaxhighlight lang='bash'>
'''Алгоритм генерации QR-кода'''
'Алгоритм генерации QR-кода
</syntaxhighlight>'


__QR код__ — это монохромная картинка, на которой некоторые устройства (например смартфон со специальным приложением) распознают текст. Этим текстом может быть не только простая фраза, но и, хоть это и не входит в официальную спецификацию, ссылка, номер телефона или визитная карточка. Такие коды чаще всего используют, чтобы закодировать ссылку и распечатать её на плакате или визитке.
'''QR код''' — это монохромная картинка, на которой некоторые устройства (например смартфон со специальным приложением) распознают текст. Этим текстом может быть не только простая фраза, но и, хоть это и не входит в официальную спецификацию, ссылка, номер телефона или визитная карточка. Такие коды чаще всего используют, чтобы закодировать ссылку и распечатать её на плакате или визитке.


Эта статья — подробная инструкция по созданию QR кода с примерами на каждом шаге, которая требует от вас только базового умения работать с бинарными данными и владения любым языком программирования (если вы хотите создать автоматический генератор QR кода).
Эта статья — подробная инструкция по созданию QR кода с примерами на каждом шаге, которая требует от вас только базового умения работать с бинарными данными и владения любым языком программирования (если вы хотите создать автоматический генератор QR кода).
Строка 16: Строка 14:


Процесс генерации QR кода делится на несколько чётких шагов:
Процесс генерации QR кода делится на несколько чётких шагов:
  - Кодирование данных.
Кодирование данных.
  - Добавление служебной информации и заполнения.
Добавление служебной информации и заполнения.
  - Разделение информации на блоки.
Разделение информации на блоки.
  - Создание байтов коррекции.
Создание байтов коррекции.
  - Объединение блоков.
Объединение блоков.
  - Размещение информации на QR коде.
Размещение информации на QR коде.


<syntaxhighlight lang='bash'>
'''Кодирование данных'''
'Кодирование данных
</syntaxhighlight>'


QR код поддерживает несколько способов кодирования данных, в зависимости от того, какие символы используются: цифровое, буквенно-цифровое, кандзи (китайско-японские иероглифы) и побайтовое кодирование. Цифровое кодирование подразумевает использования только цифр от 0 до 9, буквенно цифровое — прописные буквы латинского алфавита, цифры и символы $%*+-./: и пробел, кандзи я рассматривать не буду, а байты кодирования не требуют вообще. Сначала вам надо создать пустую последовательность бит, которая дальше будет заполняться.
QR код поддерживает несколько способов кодирования данных, в зависимости от того, какие символы используются: цифровое, буквенно-цифровое, кандзи (китайско-японские иероглифы) и побайтовое кодирование. Цифровое кодирование подразумевает использования только цифр от 0 до 9, буквенно цифровое — прописные буквы латинского алфавита, цифры и символы $%*+-./: и пробел, кандзи я рассматривать не буду, а байты кодирования не требуют вообще. Сначала вам надо создать пустую последовательность бит, которая дальше будет заполняться.


<syntaxhighlight lang='bash'>
'''Цифровое кодирование'''
'Цифровое кодирование
</syntaxhighlight>'


Этот тип кодирования требует 10 бит на 3 символа. Вся последовательность символов разбивается на группы по 3 цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.
Этот тип кодирования требует 10 бит на 3 символа. Вся последовательность символов разбивается на группы по 3 цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.
Строка 37: Строка 31:
Например, есть строка «12345678», которую надо закодировать. Мы разбиваем её на числа: 123, 456 и 78, затем переводим каждое из них в двоичный вид: 0001111011, 0111001000 и 1001110, и объединяем это в один поток: 000111101101110010001001110.
Например, есть строка «12345678», которую надо закодировать. Мы разбиваем её на числа: 123, 456 и 78, затем переводим каждое из них в двоичный вид: 0001111011, 0111001000 и 1001110, и объединяем это в один поток: 000111101101110010001001110.


<syntaxhighlight lang='bash'>
'''Буквенно-цифровое кодирование'''
'Буквенно-цифровое кодирование
</syntaxhighlight>'


В этом случае на 2 символа требуется 11 бит информации. Входной поток символов разделяется на группы по 2, в группе каждый символ кодируется согласно таблице внизу, значение первого символа в группе умножается на 45 и прибавляется к значение второго символа. Полученное число переводится в 11-битное двоичное число и добавляется к последовательности бит. Если в последней группе 1 символ, то его значение сразу кодируется 6-битным числом и добавляется к последовательности бит.
В этом случае на 2 символа требуется 11 бит информации. Входной поток символов разделяется на группы по 2, в группе каждый символ кодируется согласно таблице внизу, значение первого символа в группе умножается на 45 и прибавляется к значение второго символа. Полученное число переводится в 11-битное двоичное число и добавляется к последовательности бит. Если в последней группе 1 символ, то его значение сразу кодируется 6-битным числом и добавляется к последовательности бит.
Строка 49: Строка 41:
Например, строка «HELLO» кодируется следующим образом. Разбиваем на группы: HE, LL, O; находим соответствующее значение символам в каждой группе: (17, 14), (21, 21), (24); находим значение для каждой группы: 17 * 45 + 14 = 779, 21 * 45 + 21 = 966, 24 = 24; переводим каждое значение в двоичный вид: 779 = 01100001011, 966 = 01111000110, 24 = 011000; и объединяем всё это в одну последовательность бит: 0110000101101111000110011000.
Например, строка «HELLO» кодируется следующим образом. Разбиваем на группы: HE, LL, O; находим соответствующее значение символам в каждой группе: (17, 14), (21, 21), (24); находим значение для каждой группы: 17 * 45 + 14 = 779, 21 * 45 + 21 = 966, 24 = 24; переводим каждое значение в двоичный вид: 779 = 01100001011, 966 = 01111000110, 24 = 011000; и объединяем всё это в одну последовательность бит: 0110000101101111000110011000.


<syntaxhighlight lang='bash'>
'''Побайтовое кодирование'''
'Побайтовое кодирование
</syntaxhighlight>'


Это универсальный способ кодирования, которым можно закодировать любые символы. Единственным недостатком метода является относительно низкая плотность информации. В этом случае текст кодируется в любой кодировке (рекомендуемо в UTF-8) и полученная последовательность байт берётся в неизменном виде.
Это универсальный способ кодирования, которым можно закодировать любые символы. Единственным недостатком метода является относительно низкая плотность информации. В этом случае текст кодируется в любой кодировке (рекомендуемо в UTF-8) и полученная последовательность байт берётся в неизменном виде.
Строка 57: Строка 47:
Например, строка «Хабр», закодированния кодировкой UTF-8, состоит из следующих байт: 11010000, 10100101, 11010000, 10110000, 11010000, 10110001, 11010001 и 10000000. Их надо просто объединить в один поток бит: 1101000010100101110100001011000011010000101100011101000110000000.
Например, строка «Хабр», закодированния кодировкой UTF-8, состоит из следующих байт: 11010000, 10100101, 11010000, 10110000, 11010000, 10110001, 11010001 и 10000000. Их надо просто объединить в один поток бит: 1101000010100101110100001011000011010000101100011101000110000000.


[[https///habr.com/ru/post/172525/Подробнее]]
[[https://habr.com/ru/post/172525/Подробнее]]
[[Category:3 сбор данных]]
 
<vote type=1 />