Všetky balíky
QR for Laravel
Nízkoúrovňový enkodér
Encoder implementuje QR Code Model 2 (ISO/IEC 18004:2015) — nezávisle od frameworku a bez stavu okrem vyhľadávacích tabuliek nezávislých od vstupu, takže je bezpečný aj v dlhobežiacich workeroch. Pre explicitné segmenty ho použite priamo:
use RoundlyConsulting\Qr\DataTransferObjects\EncodeOptions;
use RoundlyConsulting\Qr\Encoder\{Encoder, Segment};
$matrix = app(Encoder::class)->encode('data', new EncodeOptions(errorCorrection: ErrorCorrection::High));
$matrix = app(Encoder::class)->encodeSegments([Segment::alphanumeric('HELLO'), Segment::numeric('123')], new EncodeOptions);
Segment::totalBits([Segment::bytes('hi')], version: 1); // ?intVýsledné nastavenia s predvolenými hodnotami:
new EncodeOptions( // the encoder's resolved options (defaults shown)
errorCorrection: ErrorCorrection::Medium, minVersion: 1, maxVersion: 40, mask: null,
boostErrorCorrection: true, eci: EciMode::Auto, segmentation: Segmentation::Optimal, kanji: false,
);Ako kóduje
- Segmentácia — Optimal (najkratšia kombinácia segmentov numeric, alphanumeric, byte a voliteľne kanji), Single (najúspornejší jediný režim) alebo Byte.
- Verzia — najmenšia verzia v povolenom rozsahu, do ktorej sa dáta zmestia; inak DataTooLongException s potrebným a dostupným počtom bitov.
- Zvyšovanie — zvýši M → Q → H, kým sa dáta zmestia do zvolenej verzie; verziu nikdy nemení a úroveň nikdy neznižuje.
- ECI 26 — v režime auto sa pridá len vtedy, keď byte segment obsahuje ne-ASCII UTF-8; ak je označenie potrebné, znaky kanji idú do UTF-8 byte segmentov.
- Maskovanie — všetkých osem masiek sa ohodnotí penalizačnými pravidlami ISO (pri zhode vyhrá najnižší index), alebo sa použije vynútená maska.
- Segment::numeric(), alphanumeric(), bytes(), kanji() a eci() vytvárajú explicitné segmenty; znak mimo vynúteného režimu vyhodí UnencodableCharacterException s jeho pozíciou.
Kapacita (dátové kódové slová)
| Verzia | L | M | Q | H |
|---|---|---|---|---|
| 1 | 19 | 16 | 13 | 9 |
| 6 | 136 | 108 | 76 | 60 |
| 13 | 428 | 334 | 244 | 180 |
| 40 | 2956 | 2334 | 1666 | 1276 |
Verzia 13-M pojme 331 bajtov (limit EPC); verzia 40-L pojme 7089 číslic, 4296 alfanumerických znakov alebo 2953 bajtov.
QrMatrix
$matrix = Qr::matrix('HELLO WORLD');
$matrix->size(); // modules per side
$matrix->version(); // 1–40
$matrix->errorCorrection(); // ErrorCorrection
$matrix->mask(); // 0–7
$matrix->isDark($x, $y); // bool
$matrix->row($y); // one row
$matrix->rows(); // every row
$matrix->darkModuleCount();
$matrix->info(); // EncodingInfo
echo $matrix->toText(); // debug text, not an image formatEncodingInfo
$info = Qr::text('HELLO WORLD')->info();
$info->version; // chosen version
$info->errorCorrection; // final level (after any boost)
$info->errorCorrectionBoosted; // bool
$info->mask; // chosen mask
$info->segments; // list<SegmentInfo>: mode, characterCount, bitLength
$info->dataBits; // bits used
$info->capacityBits; // bits available
$info->eciDesignator; // ?int
$info->maskPenalties; // 8 values when automatic, [] when forcedPrejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.