Pregătești
Seleziona il contenuto del codice o il file che desideri trasmettere.
Instrumente în browser Instrument public
MEGA QR include un generatore di codici e uno strumento di trasferimento ottico. Create un codice per un link, Wi‑Fi o contatto; per il trasferimento, uno schermo mostra una sequenza di codici che la camera dell'altro dispositivo ricostruisce in un file.

MEGA QR
Seleziona il contenuto del codice o il file che desideri trasmettere.
Il generatore produce l’immagine QR. Il trasferimento ottico mostra fotogrammi successivi.
La camera legge il codice o raccoglie i fotogrammi finché non riesce a ricostruire il file.
Link, Wi-Fi, contatto e altri tipi di contenuto; esportazione PNG o SVG.
Dati trasmessi tra schermo e camera, senza una connessione di rete tra i dispositivi.
La generazione e la ricostruzione avvengono nel browser, senza un account utente.
Il trasferimento ottico dipende da camera, luce, distanza e schermo. Il dispositivo che trasmette non riceve conferma della ricezione. Un codice mostrato pubblicamente può essere letto da chi lo vede.
MEGA QR nel dettaglio
MEGA QR sono due strumenti sullo stesso dominio, e il secondo non assomiglia affatto al primo. Il generatore crea codici QR per otto tipi di contenuto: link, testo, WiFi, biglietto da visita, WhatsApp, email, SMS, telefono e coordinate. Il trasferimento ottico sposta un file intero da uno schermo a una camera, senza cavo, senza Bluetooth, senza rete tra i due dispositivi.
Entrambi funzionano interamente nel browser. Le pagine non effettuano alcuna richiesta a terzi, e i due binari WebAssembly da cui dipende il trasferimento sono serviti da public/wasm/, non da un CDN — altrimenti la promessa che nulla esca dal dispositivo sarebbe falsa. Una password WiFi digitata nel generatore non arriva mai a un server.
L’idea che merita di essere compresa riguardo al trasferimento: uno schermo emette luce, una camera la legge, e il ricevitore non ha modo di chiedere nulla indietro. Non esiste un canale di ritorno. Da questo fatto deriva tutto il resto — i fotogrammi si descrivono da soli, il loro ordine non conta, qualsiasi sottoinsieme sufficientemente grande ricostruisce il file, e il mittente non può mai sapere se qualcosa è arrivato.
Link, testo, WiFi, vCard, WhatsApp, email, SMS, telefono e geolocalizzazione. Quando si inserisce un logo, il livello di correzione degli errori passa forzatamente a H, il più alto — un logo apre un buco nell’area dati e il codice non sopravvive altrimenti. Il logo è limitato al 35% della superficie, con avviso dal 30%. L’esportazione è renderizzata separatamente dall’anteprima, così un PNG da 4096 px non perturba ciò che è sullo schermo.
La libreria di generazione, qr-code-styling 1.9.2, converte il testo con charCodeAt(i) & 0xFF e tronca silenziosamente ogni diacritica romena e tutto il cirillico: „Ștefan Țurcanu” veniva scansionato indietro come „tefan urcanu”. Noi codifichiamo in UTF-8 prima che lo veda, così la sua troncatura non abbia più nulla da tagliare. I payload WiFi e vCard sono anch’essi escape-ati — un „;” in una password o una virgola in un nome di azienda altrimenti corrompevano il codice, senza alcun segno.
Il file viene impacchettato in una busta (nome, tipo MIME, dimensione, SHA-256), compresso con gzip se risulta più piccolo, poi passato su RaptorQ (RFC 6330). Ogni frame porta un intestazione fissa di 20 byte e uno o più pacchetti. Non conta quali frame si catturano, conta quanti: qualsiasi sottoinsieme abbastanza grande ricostruisce il file. Misurato in pixel renderizzati realmente, l’overhead di RaptorQ è 1,000x — i codici LT che usano i progetti di riferimento richiedono 1,15x.
La seconda modalità di invio è una rotazione fissa che si ripete all’infinito, senza sessione e senza qualcuno che prema start. La lunghezza della rotazione viaggia in ogni frame, così un passante che punta la camera sa dal primo codice catturato quanto dura il tutto, invece di vedere una rotella. La configurazione di riferimento è 36 frame a 12 al secondo — una rotazione di tre secondi che trasporta 25 KB da un singolo codice bianco e nero semplice. Un menu intero, o l’orario completo di una stazione.
Il numero di codici sullo schermo, il colore e la versione QR sono tre vincoli diversi e si regolano separatamente. La scala di densità ha 29 livelli, da v10 su una singola banda (7 KB/s a 30 frame al secondo) fino a v39 su quattro bande a colori (959 KB/s). Esiste anche una scala completa senza colore, fino a 320 KB/s, perché una camera a cui muore la crominanza non deve restare bloccata su una sola banda.
Dati e funzionamento
Dall’esplorazione all’implementazione
Un codice QR porta a contenuti brevi e, se è un link, a una pagina che potete cambiare in seguito — il codice stampato non cambia da solo la propria destinazione. Il trasferimento ottico sposta un file tra due dispositivi che non hanno il permesso o non possono comunicare via rete. Sono compiti diversi e la confusione tra essi è la più frequente.
Per la stampa: contrasto, dimensione finale, area libera attorno, testato alla dimensione alla quale verrà incollato. Per il trasferimento: quanto grande cade un modulo sul sensore della camera. Sotto un modello duro di lente (griglia di crominanza sfalsata di un pixel più una sfocatura 3x3) il colore restituisce tutti e tre i codici a 4 pixel del dispositivo per modulo e assolutamente nulla a 2. Quello è il vero confine, ed è per questo che il colore è una scelta dell’uomo, non del controller.
La nostra suite attraversa una catena di camere autentica — i frame sono scritti come YUV 4:2:0 e dati a Chrome come webcam falsa, quindi il sottocampionamento della crominanza è reale. Ciò che non ha: obiettivo, riflessi, movimento, otturatore rolling. Dieci minuti con un telefono vero danno la prima cifra onesta e sono il passo successivo della nostra lista di lavoro, non un dettaglio.
Attraverso una catena di camera simulata, a 10 frame al secondo, con i codici che riempiono la maggior parte dell’immagine a 3-5 pixel di camera per modulo, tutte e quattro le configurazioni sono risultate con hash verificato: bianco e nero su una banda 15,8 KB/s, bianco e nero su quattro bande 37,7 KB/s, colore su una banda 40,1 KB/s, colore su quattro bande 115,7 KB/s. Il colore su una sola banda batte il bianco e nero su quattro. Il tasso di errore è stato zero ovunque. Tenga presente da dove arrivano le cifre: frame geometrici perfetti, senza obiettivo e senza movimento. Un telefono vero non è ancora stato messo davanti a loro.
La camera è richiesta a 1920x1080 a 30 frame al secondo, con preferenza per quella posteriore; se Android rifiuta il vincolo, si passa a qualsiasi camera. Ogni frame acquisito viene ridotto a 1280 px sul lato lungo prima della decodifica. Ciò che conta davvero non è la risoluzione, ma quanti pixel del sensore cadono su un modulo: il bianco e nero ha bisogno di circa tre, il colore di circa il doppio, perché la catena video del telefono di solito fornisce 4:2:0 e dimezza entrambi i piani di colore in entrambe le direzioni. Il dettaglio fine di colore è la prima cosa che una camera reale distrugge.
Perché l’unica cosa che il dispositivo che invia può misurare è quanti simboli hanno prodotto i propri codificatori rispetto a quanti ne sono stati richiesti — un’affermazione su un processore, non su una camera a due palmi di distanza. Un laptop non perde mai un gradino, quindi un controller che legge «zero errori» come «continua» sale fino in cima e mette sullo schermo quattro codici che cambiano trenta volte al secondo, che nulla può scansionare. Questo è stato davvero consegnato una volta e una persona l’ha trovato in un minuto. Ora la modalità automatica è plafonata a una banda, bianco e nero, versione 26 e 15 frame al secondo. 15 non è un numero tondo: una camera di telefono registra a 30 e non è sincronizzata con lo schermo, quindi un frame deve rimanere visualizzato per due esposizioni consecutive — 67 ms — per essere catturato interamente.
Niente di speciale, ed è proprio il punto. Non esistono numeri d’ordine da recuperare. Il codificatore produce pacchetti di riparazione in proporzione di 2x rispetto ai simboli sorgente — misurato su questo codice: al 60% di perdita di frame, un set di circa 2x K recupera 2 MB senza che la lista venga mai riprodotta una seconda volta. Il limite assoluto è 60.000 pacchetti; oltre questo il mittente semplicemente ripete la lista più spesso, il che costa tempo, non memoria. Se comunque qualcosa va storto, l’hash SHA-256 lo intercetta e il trasferimento fallisce dichiaratamente invece di consegnare un file corrotto.
No, e non è una svista. Non esiste un canale di ritorno: uno schermo emette luce, e la luce non torna indietro con conferme. Il completamento si vede sul dispositivo che riceve. Qualsiasi interfaccia che pretendesse altro mentirebbe, e abbiamo già avuto una volta un test che offriva esattamente questa prova che il prodotto non ha mai: la simulazione calcolava il proprio tasso di mancato riconoscimento da ciò che la camera simulata riusciva a risolvere. Quello è un canale di ritorno. Quando un test e il codice consegnato non concordano su ciò che si può sapere, è il test a mentire.
32 MB, rifiutato alla selezione se è più grande. Il limite non deriva dal protocollo, ma dalla memoria di una scheda del browser: RaptorQ materializza tutti i pacchetti in una volta, e un file da 50 MB con rapporto 2x significherebbe 150 MB di array vivi, abbastanza da uccidere la scheda di un telefono. La codifica gira in modo sincrono sul thread principale, misurata a 2,5 secondi per 32 MB su computer. Ciò che viaggia effettivamente non è la dimensione del file: il contenuto è compresso con gzip prima di RaptorQ, quindi una tabella da 1 MB è pochi kilobyte di pacchetti, e una fotografia da 1 MB è un megabyte di pacchetti.
Né l’uno né l’altro. Non esiste un account e non esiste un abbonamento. Dopo la prima visita le pagine funzionano senza rete, perché tutto — inclusi i due binari WebAssembly — viene servito dal proprio dominio. Vale la pena dire anche che cosa abbiamo imparato lungo il percorso: un service worker registrato non significa supporto offline. Al primo caricamento la pagina e le sue risorse vengono recuperate prima che il worker prenda il controllo, quindi il suo handler non le vede mai. La pagina segnala le proprie risorse tramite Performance API invece di presumere.
Esempio illustrativo
Uno scenario di utilizzo, senza dati del cliente o risultati commerciali attribuiti.
Uno schermo in una stazione o una vetrina deve dare ai passanti un file — l’orario completo, il menu, un modulo — senza WiFi pubblico, senza account e senza che qualcuno prema qualcosa.
Lo schermo esegue un carosello: 36 fotogrammi a 12 al secondo, un ciclo di tre secondi che si ripete all’infinito. La densità è fissa per la durata del carosello, perché un ciclo è una promessa solo se la sua lunghezza resta tale. La lunghezza del ciclo viaggia in ogni fotogramma, così un telefono che cattura il primo codice sa subito quanto dura tutto.
Il passante filma tre secondi e ottiene 25 KB ricostruiti nel suo browser, verificati con SHA-256, da un unico semplice codice bianco e nero. Lo schermo non sa di essere stato letto e non può saperlo.
Ce este necesar:Un ecran care poate ține un cadru afișat 83 ms fără sfâșiere, lumină în care codul nu e spălat de reflexii, și o cameră care rezolvă aproximativ trei pixeli de senzor per modul. Cifra de 25 KB e derivată din aceleași funcții pe care le folosește expeditorul, nu tastată de mână alături de ele.
Possibilità di collaborazione
Codici per l’accesso a informazioni pubbliche, istruzioni o contatti; trasferimento ottico di file tra dispositivi compatibili, con valutazione delle politiche di sicurezza dell’istituzione.
Definiamo un pilot attorno a un processo reale: utenti, dati, integrazioni, costi e criteri di accettazione. L’estensione segue dopo la valutazione del risultato.
Stabiliamo i requisiti di accessibilità, hosting, protezione dei dati e interoperabilità. Ogni connessione con servizi AGE o STISC richiede la validazione dell’ammissibilità, dell’accesso e delle approvazioni.
Questi sono scenari di adattamento, non dichiarazioni su contratti o partenariati esistenti. Le funzioni proposte si confermano nell’ambito di lavoro del progetto.
Discută un pilotonGDPR.md verifica la superficie pubblica di un sito web: cookie, tracker, moduli e documenti informativi.
Platformă publicăMegaforms esplora la raccolta di risposte tramite moduli conversazionali, incluse risposte vocali e trascrizione.
Dezvoltare & demonstrațiiCostruiamo una piattaforma per menu digitali e operazioni accessibili tramite QR.
Dezvoltare & demonstrațiiRaccontaci il tuo processo. Insieme stabiliamo cosa vale la pena costruire, cosa possiamo collegare e come verifichiamo il risultato.