NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
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);   // ?int

Vý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á)

VerziaLMQH
11916139
61361087660
13428334244180
402956233416661276

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 format

EncodingInfo

$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 forced

Prejavte 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 kryptomien

Odoslaní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.