PHPackages                             cruide/qrcode-native-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. cruide/qrcode-native-php

ActiveLibrary

cruide/qrcode-native-php
========================

Pure PHP QR code generator: no external services, no dependencies. Product/inventory labeling oriented.

v1.0.0(today)00MITPHPPHP &gt;=8.0

Since Aug 8Pushed todayCompare

[ Source](https://github.com/cruide/qrcode-native-php)[ Packagist](https://packagist.org/packages/cruide/qrcode-native-php)[ RSS](/packages/cruide-qrcode-native-php/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (2)Used By (0)

cruide/qrcode-native-php
========================

[](#cruideqrcode-native-php)

> Alexander Tischenko —

Генерация QR-кодов на чистом PHP — без сторонних сервисов и без зависимостей.

Основной сценарий — маркировка товаров и складских единиц: название, артикул, UUID, дата прихода, комментарий. Подходит для печати этикеток (SVG — векторный, даёт чёткий отпечаток при любом размере).

Возможности
-----------

[](#возможности)

- Полная реализация ISO/IEC 18004: версии 1–40, уровни коррекции L/M/Q/H
- Байтовый режим кодирования — UTF-8 (кириллица) работает «из коробки»
- Reed–Solomon, интерливинг блоков, автовыбор версии и лучшей маски
- Рендер: **SVG** (всегда), **PNG** (нужен ext-gd), **текст/терминал**, data-URI
- Ноль зависимостей, PHP &gt;= 8.0
- Только кодирование (декодирования нет)

Установка
---------

[](#установка)

```
composer require cruide/qrcode-native-php
```

Быстрый старт
-------------

[](#быстрый-старт)

```
use Cruide\QrCode\QrCode;

$qr = QrCode::make('https://kengois.ru');

echo $qr->toText();            // просмотр в терминале
$qr->saveSvg('code.svg');      // вектор для печати
$qr->savePng('code.png', 480); // растр (нужен GD)
$html = '';
```

Этикетка товара
---------------

[](#этикетка-товара)

```
use Cruide\QrCode\ErrorCorrection;
use Cruide\QrCode\ProductLabel;
use Cruide\QrCode\QrCode;

$label = ProductLabel::make()
    ->name('Краска фасадная белая, 10 л')
    ->article('KR-1024')
    ->uuid('9f1c8a2e-4b7d-4e6a-9c3f-2d5a8b1c0e42')
    ->arrivedAt(new DateTimeImmutable('2026-08-08')) // или строку '2026-08-08'
    ->comment('Партия №5, склад Б')
    ->extra(['BATCH' => '2026-31', 'BIN' => 'B-14-03']); // доп. поля

$qr = QrCode::make($label)->setEcLevel(ErrorCorrection::M);
$qr->saveSvg('label.svg', moduleSize: 6);
```

Содержимое QR (формат по умолчанию — строки `KEY:значение`):

```
NAME:Краска фасадная белая, 10 л
## ART:KR-1024
UUID:9f1c8a2e-4b7d-4e6a-9c3f-2d5a8b1c0e42
## IN:2026-08-08
NOTE:Партия №5, склад Б
## BATCH:2026-31
## BIN:B-14-03

```

### Форматы полезной нагрузки

[](#форматы-полезной-нагрузки)

```
$label->format(ProductLabel::FORMAT_LINES); // KEY:значение, по строке на поле
$label->format(ProductLabel::FORMAT_JSON);  // {"NAME":"...","ART":"..."}
$label->format(ProductLabel::FORMAT_CSV);   // значение|значение|значение...
$label->csvDelimiter(';');                  // свой разделитель для CSV
$label->keys(['name' => 'ТОВАР']);          // переопределить имена ключей
```

Настройки генерации
-------------------

[](#настройки-генерации)

```
$qr = QrCode::make($payload)
    ->setEcLevel(ErrorCorrection::H) // L/M/Q/H, по умолчанию M
    ->setMinVersion(3)               // минимальная версия (единый размер этикеток)
    ->setMask(4);                    // фиксированная маска вместо автоподбора
```

УровеньВосстановлениеКогда использоватьL~7%максимум данных, чистые условияM~15%по умолчаниюQ~25%транспортировкаH~30%царапающиеся/грязные этикеткиЁмкость (байты, версия 40): L — 2953, M — 2331, Q — 1663, H — 1273.

API
---

[](#api)

МетодОписание`QrCode::make($payload)`создать генератор (строка или `ProductLabel`)`setEcLevel(string)`уровень коррекции L/M/Q/H`setMinVersion(?int)`минимальная версия 1–40`setMask(?int)`маска 0–7`toSvg($moduleSize=8, $quietZone=4, $fg, $bg)`SVG-строка`toPng($width=512, $quietZone=4)`бинарный PNG (GD)`toText($quietZone=2, $invert=false)`Unicode-превью`toDataUri()`SVG в виде data-URI`saveSvg($path, ...)`, `savePng($path, ...)`запись в файл`getMatrix()`, `getSize()`, `getVersion()`, `getMask()`интроспекцияПроверка
--------

[](#проверка)

```
composer dump-autoload
php tests/structural.php   # структурные тесты без PHPUnit
php examples/product_label.php
```

Как это работает
----------------

[](#как-это-работает)

1. Данные кодируются в байтовом режиме (индикатор `0100`, длина, байты UTF-8, терминатор, пад-байты `0xEC`/`0x11`).
2. Подбирается минимальная версия, поток разбивается на RS-блоки, для каждого считаются коды коррекции (GF(256), полином 0x11D), блоки интерливируются.
3. Строится матрица: поисковые паттерны, тайминг, выравнивание, служебная информация (формат/версия, BCH), данные размещаются зигзагом.
4. Примеряются 8 масок, выбирается минимальный штраф по четырём правилам.

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16410211?v=4)[Alex Tisch](/maintainers/cruide)[@cruide](https://github.com/cruide)

---

Top Contributors

[![cruide](https://avatars.githubusercontent.com/u/16410211?v=4)](https://github.com/cruide "cruide (1 commits)")

---

Tags

qr codeqrcodeqrgeneratorsvgpnglabelnativewarehouse

### Embed Badge

![Health badge](/badges/cruide-qrcode-native-php/health.svg)

```
[![Health](https://phpackages.com/badges/cruide-qrcode-native-php/health.svg)](https://phpackages.com/packages/cruide-qrcode-native-php)
```

###  Alternatives

[chillerlan/php-qrcode

A QR Code generator and reader with a user-friendly API. PHP 8.4+

2.4k40.0M317](/packages/chillerlan-php-qrcode)[linkxtr/laravel-qrcode

A clean, modern, and easy-to-use QR code generator for Laravel

3827.1k](/packages/linkxtr-laravel-qrcode)[jkphl/iconizr

A PHP command line tool for converting SVG images to a set of CSS icons (SVG &amp; PNG, single icons and / or CSS sprites) with support for image optimization and Sass output

4849.0k](/packages/jkphl-iconizr)[yellowskies/qr-code-bundle

Symfony Barcode &amp; QR Code Generator Bundle with Twig extension

37721.8k](/packages/yellowskies-qr-code-bundle)[tuncaybahadir/quar

A simple QR Code generation tool for your projects with Laravel 10, 11, 12, 13 versions, php 8.2, 8.3, 8.4 and 8.5

82133.8k6](/packages/tuncaybahadir-quar)[amirezaeb/heroqr

A Powerful QR Code Management Library For PHP

10015.2k](/packages/amirezaeb-heroqr)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
