Кодирование (4 функции)
qrcodegen_encodeText кодирование
Одношаговое кодирование текста (оптимальный режим выбирается автоматически); вызывающий предоставляет буфер модулей и временный (qrcodegen_BUFFER_LEN_MAX или по calcSegmentBufferSize). Четыре уровня ECC (LOW/MEDIUM/QUARTILE/HIGH); min/maxVersion 0 — автоматически.
qrcodegen_encodeBinary / encodeSegments / encodeSegmentsAdvanced кодирование
Бинарные данные / сегментированный / расширенный вход (ручная маска, управление boostEcl) — сегментированное кодирование смешивает цифры и текст для оптимального сжатия.
Вывод PNG (слой xs)
qrcodegen_png рендер
Одношаговый вывод матрицы модулей в 1-битный grayscale PNG: scale×scale пикселей на модуль, по border модулей тихой зоны с четырёх сторон (спецификация рекомендует ≥ 4). IDAT сжимается потоком XDEFLATE_ZLIB xrt (заголовок zlib/adler32 от xrt), CRC32 каждого блока локально. Возвращает буфер xrtMalloc (освобождение xrtFree); *pOutSize получает длину; недопустимые параметры возвращают NULL.
uint8_t aQr[qrcodegen_BUFFER_LEN_MAX];
uint8_t aTemp[qrcodegen_BUFFER_LEN_MAX];
size_t iSize;
unsigned char* pPng;
if ( qrcodegen_encodeText("https://xs.xywhsoft.com",
aTemp, aQr, qrcodegen_Ecc_MEDIUM,
qrcodegen_Mode_BYTE, qrcodegen_Mode_BYTE, 0, 0,
qrcodegen_Mask_AUTO, true) ) {
pPng = qrcodegen_png(aQr, 4, 4, &iSize);
/* pPng: байты PNG (357 байт @ 33 модуля + 4 тихая × 4px) */
xrtFree(pPng);
}
Чтение и определение (4 функции)
qrcodegen_getSize / getModule чтение
Длина стороны матрицы и значение модуля (true=тёмный) — для своих рендереров (SVG, псевдографика терминала, canvas) или прямой записи пиксельных буферов.
qrcodegen_isNumeric / isAlphanumeric / calcSegmentBufferSize определение
Определение режима (числовой/буквенно-цифровой) для решений при сегментированном кодировании; calcSegmentBufferSize считает временный буфер сегмента.