Passer au contenu
megapromotingDiscutons
Produits MEGA QR

Outils dans le navigateur Instrument public

Un code QR. Ou un fichier qui passe par la lumière.

MEGA QR inclut un générateur de codes et un outil de transfert optique. Vous créez un code pour un lien, le Wi-Fi ou un contact ; pour le transfert, un écran affiche une succession de codes que la caméra de l’autre appareil reconstruit en un fichier.

Generatorul MEGA QR: tipurile de cod, câmpul de conținut completat cu o adresă și codul QR generat alături
qr.megapromoting.com · le code se compose dans le navigateur, à partir de l’adresse saisie dans le champ de contenu

MEGA QR

De l’information au travail accompli.

01

Pregătești

Vous choisissez le contenu du code ou le fichier que vous souhaitez transmettre.

02

Afișezi

Le générateur produit l’image QR. Le transfert optique affiche des images successives.

03

Scanezi

La caméra lit le code ou additionne les images jusqu’à pouvoir reconstruire le fichier.

Là où il devient utile.

Générateur QR

Lien, Wi-Fi, contact et autres types de contenu ; export PNG ou SVG.

Transfert optique

Données transmises entre l’écran et la caméra, sans connexion réseau entre les appareils.

Traitement local

La génération et la reconstruction se font dans le navigateur, sans compte utilisateur.

Le transfert optique dépend de la caméra, de la lumière, de la distance et de l’écran. L’appareil qui transmet ne reçoit pas la confirmation de réception. Un code affiché publiquement peut être lu par ceux qui le voient.

MEGA QR en détail

Ce que vous pouvez faire avec ce projet.

MEGA QR sont deux outils sur le même domaine, et le second ne ressemble pas du tout au premier. Le générateur crée des codes QR pour huit types de contenu : lien, texte, Wi-Fi, carte de visite, WhatsApp, e-mail, SMS, téléphone et coordonnées. Le transfert optique déplace un fichier entier d’un écran vers une caméra, sans câble, sans Bluetooth, sans réseau entre les deux appareils.

Les deux fonctionnent entièrement dans le navigateur. Les pages n’effectuent aucune requête vers des tiers, et les deux binaires WebAssembly dont dépend le transfert sont servis depuis public/wasm/, et non depuis un CDN — sinon la promesse que rien ne quitte l’appareil serait fausse. Un mot de passe Wi-Fi saisi dans le générateur n’atteint jamais un serveur.

L’idée qu’il faut comprendre à propos du transfert : un écran émet de la lumière, une caméra la lit, et le récepteur n’a aucun moyen de demander quoi que ce soit en retour. Il n’existe pas de canal de retour. De ce fait découle tout le reste — les cadres se décrivent eux-mêmes, leur ordre n’a pas d’importance, tout sous-ensemble suffisamment grand reconstruit le fichier, et l’expéditeur ne peut jamais savoir si quelque chose est arrivé.

01

Générateur : huit types, PNG et SVG, logo au centre

Lien, texte, WiFi, vCard, WhatsApp, email, SMS, téléphone et géolocalisation. Quand vous ajoutez un logo, le niveau de correction d’erreurs passe de force à H, le plus élevé — un logo crée un trou dans la zone de données et le code ne survit pas autrement. Le logo est plafonné à 35 % de la surface, avec un avertissement à partir de 30 %. L’export est rendu séparément de l’aperçu, afin qu’un PNG de 4096 px ne perturbe pas ce qui est à l’écran.

02

Les diacritiques ne se perdent pas

La bibliothèque de génération, qr-code-styling 1.9.2, convertit son texte avec charCodeAt(i) & 0xFF et coupe silencieusement chaque diacritique roumain et tout le cyrillique : « Ștefan Țurcanu » se scannait en retour comme « tefan urcanu ». Nous encodons en UTF-8 avant qu’elle le voie, afin que son troncage n’ait plus rien à couper. Les charges utiles WiFi et vCard sont elles aussi échappées — un « ; » dans un mot de passe ou une virgule dans un nom d’entreprise corrompaient autrement le code, sans aucun signe.

03

Transfert optique : fontaine de codes, pas une séquence

Le fichier est emballé dans une enveloppe (nom, type MIME, taille, SHA-256), compressé avec gzip s’il devient plus petit, puis passé dans RaptorQ (RFC 6330). Chaque cadre porte un en-tête fixe de 20 octets et un ou plusieurs paquets. Peu importe quels cadres vous captez, ce qui compte c’est combien : tout sous-ensemble suffisamment grand reconstruit le fichier. Mesuré en pixels réellement rendus, la surcharge RaptorQ est de 1,000x — les codes LT utilisés par les projets de référence exigent 1,15x.

04

Carrousel : un écran public sur lequel personne n’appuie sur rien

Le second mode d’envoi est une boucle fixe qui se répète à l’infini, sans session et sans personne pour appuyer sur start. La longueur de la boucle voyage dans chaque cadre, de sorte qu’un passant qui pointe la caméra sait dès le premier code capté combien de temps tout cela dure, au lieu de voir une roulette. La configuration de référence est de 36 cadres à 12 par seconde — une boucle de trois secondes qui transmet 25 KB à partir d’un seul code noir et blanc simple. Un menu entier, ou l’horaire complet d’une station.

05

Il s’adapte à la caméra qui regarde, sur trois axes séparés

Le nombre de codes à l’écran, la couleur et la version QR sont trois contraintes différentes et se règlent séparément. L’échelle de densité comporte 29 niveaux, de v10 sur une seule bande (7 KB/s à 30 cadres par seconde) jusqu’à v39 sur quatre bandes en couleur (959 KB/s). Il existe aussi une échelle complète sans couleur, jusqu’à 320 KB/s, parce qu’une caméra dont la chrominance meurt ne doit pas rester bloquée sur une seule bande.

Données et fonctionnement

Ce qui entre dans le système. Ce qu'il faut vérifier.

Rien ne quitte l’appareil
Le générateur construit le code dans la page. Le transfert reconstruit le fichier dans le navigateur du récepteur. Les pages n’effectuent aucune requête vers des tiers, et les binaires WebAssembly (raptorq pour le code fontaine, zxing-wasm pour le décodage) sont servis localement. Il n’y a pas de compte, pas de session sur le serveur, pas d’enregistrement de ce que vous avez transmis.
Un QR n’est pas un secret
Quiconque voit le code de manière suffisamment claire peut le scanner. Cela vaut aussi pour le transfert optique : un écran qui affiche des cadres est visible pour n’importe quelle caméra dans la pièce. Un environnement isolé du réseau ne signifie pas automatiquement que le transfert optique est autorisé — c’est la politique de l’organisation qui décide, pas la topologie du réseau.
L’intégrité se vérifie, elle ne se présume pas
L’enveloppe porte le SHA-256 complet du fichier original, et l’en-tête porte ses quatre premiers octets comme somme de contrôle rapide. Après reconstruction, le récepteur recalcule le hash complet et renvoie une erreur de non-correspondance s’il diffère. Un fichier qui sort du transfert est soit bit pour bit celui qui est entré, soit un échec déclaré. Il n’existe pas de troisième option.
Plafond de 32 MB, et sa raison
Au-delà de 32 MB, nous refusons le fichier à la sélection. L’encodeur RaptorQ matérialise tous les paquets d’un seul coup et s’exécute de façon synchrone sur le thread principal — mesuré à 2,5 secondes pour 32 MB sur un ordinateur, plusieurs fois plus sur un téléphone. Pendant cet intervalle, le bouton Stop est dessiné et ne peut pas être pressé. Un refus précoce est plus honnête qu’un onglet qui meurt à 80%.

De l'exploration à l'implémentation

Comment nous préparons un projet avec MEGA QR.

01

Nous choisissons lequel des deux outils est la réponse

Un code QR mène à un contenu court et, s’il s’agit d’un lien, à une page que vous pouvez modifier par la suite — le code imprimé ne change pas lui-même de destination. Le transfert optique déplace un fichier entre deux appareils qui n’ont pas le droit ou ne peuvent pas communiquer par le réseau. Ce sont des tâches différentes, et la confusion entre elles est la plus fréquente.

02

Nous fixons les conditions physiques

Pour l’impression : contraste, taille finale, zone libre autour, testé à la taille à laquelle il sera collé. Pour le transfert : quelle taille un module atteint sur le capteur de la caméra. Sous un modèle dur de lentille (grille de chrominance décalée d’un pixel plus un flou 3x3), la couleur renvoie les trois codes à 4 pixels du dispositif par module et absolument rien à 2. C’est la vraie limite, et c’est pourquoi la couleur est un choix humain, pas celui du contrôleur.

03

Nous testons sur les appareils qui seront réellement utilisés

Notre suite passe par une chaîne de caméras authentique — les images sont écrites en YUV 4:2:0 et données à Chrome comme une fausse webcam, donc la sous-échantillonnage de la chrominance est réel. Ce qu’elle n’a pas : objectif, reflets, mouvement, obturateur roulant. Dix minutes avec un vrai téléphone donnent le premier chiffre honnête et constituent l’étape suivante de notre liste de travail, pas un détail.

Des questions qui méritent d’être clarifiées.

À quelle vitesse un fichier passe-t-il réellement ?

À travers une chaîne de caméra simulée, à 10 images par seconde, avec des codes remplissant la majeure partie de l’image à 3-5 pixels de caméra par module, les quatre configurations sont sorties avec hash vérifié : noir et blanc sur une bande 15,8 KB/s, noir et blanc sur quatre bandes 37,7 KB/s, couleur sur une bande 40,1 KB/s, couleur sur quatre bandes 115,7 KB/s. La couleur sur une seule bande bat le noir et blanc sur quatre. Le taux d’échec a été nul partout. Retenez d’où viennent les chiffres : cadres géométriques parfaits, sans objectif et sans mouvement. Un vrai téléphone n’a pas encore été placé devant eux.

Que demande-t-il à la caméra et à la lumière ?

La caméra est demandée en 1920x1080 à 30 images par seconde, avec préférence pour celle à l’arrière ; si Android refuse la contrainte, nous tombons sur n’importe quelle caméra. Chaque image capturée est réduite à 1280 px sur le côté long avant le décodage. Ce qui compte vraiment, ce n’est pas la résolution, mais combien de pixels du capteur tombent sur un module : le noir et blanc a besoin d’environ trois, la couleur d’environ le double, parce que la chaîne vidéo du téléphone fournit généralement du 4:2:0 et divise par deux les deux plans de couleur dans les deux directions. Le détail fin de couleur est la première chose qu’une vraie caméra détruit.

Pourquoi le mode automatique est-il plus lent que ce que la machine peut faire ?

Parce que la seule chose que l’appareil qui envoie peut mesurer est combien de symboles ses propres encodeurs ont produits par rapport à combien lui en ont été demandés — une affirmation sur un processeur, pas sur une caméra située à deux paumes. Un ordinateur portable ne rate jamais une marche, donc un contrôleur qui lit « zéro ratés » comme « continue » monte jusqu’au sommet et met à l’écran quatre codes qui changent trente fois par seconde, que rien ne peut scanner. Cela a réellement été livré une fois, et une personne l’a trouvé en une minute. Maintenant, le mode automatique est plafonné à une bande, noir et blanc, version 26 et 15 images par seconde. 15 n’est pas un chiffre rond : une caméra de téléphone enregistre à 30 et n’est pas synchronisée avec l’écran, donc une image doit rester affichée pendant deux expositions consécutives — 67 ms — pour être capturée entière.

Que se passe-t-il si le récepteur manque des images ?

Rien de spécial, et c’est tout l’intérêt. Il n’y a pas de numéros d’ordre à récupérer. L’encodeur produit des paquets de réparation à hauteur de 2x par rapport aux symboles source — mesuré sur ce code : à 60% de perte d’images, un ensemble d’environ 2x K récupère 2 MB sans que la liste soit jamais rejouée une deuxième fois. Le plafond absolu est de 60.000 paquets ; au-delà, l’expéditeur reprend simplement la liste plus souvent, ce qui coûte du temps, pas de la mémoire. Si malgré tout quelque chose se passe mal, le hash SHA-256 le détecte et le transfert échoue explicitement au lieu de livrer un fichier corrompu.

L’expéditeur sait-il quand le fichier est arrivé ?

Non, et ce n’est pas une omission. Il n’existe pas de canal de retour — un écran émet de la lumière, et la lumière ne revient pas avec des confirmations. La finalisation se voit sur l’appareil qui reçoit. Toute interface qui prétendrait le contraire mentirait, et nous avons déjà eu une fois un test qui fournissait exactement cette preuve que le produit n’a jamais : la simulation calculait son taux d’échec à partir de ce que la caméra simulée parvenait à résoudre. C’est un canal de retour. Quand un test et le code livré ne sont pas d’accord sur ce qu’il est possible de savoir, c’est le test qui ment.

Quelle est la taille maximale du fichier et pourquoi autant ?

32 MB, refusé à la sélection s’il est plus grand. La limite ne vient pas du protocole, mais de la mémoire d’un onglet de navigateur : RaptorQ matérialise tous les paquets d’un coup, et un fichier de 50 MB avec un rapport de 2x représenterait 150 MB de tableaux vivants, assez pour tuer l’onglet d’un téléphone. Le codage s’exécute de manière synchrone sur le fil principal, mesuré à 2,5 secondes pour 32 MB sur ordinateur. Ce qui circule effectivement n’est pas la taille du fichier : l’enveloppe est compressée avec gzip avant RaptorQ, donc un tableau de 1 MB représente quelques kilooctets de paquets, et une photo de 1 MB représente un mégaoctet de paquets.

Ai-je besoin d’un compte ou d’Internet ?

Ni l’un ni l’autre. Il n’y a pas de compte et il n’y a pas d’abonnement. Après la première visite, les pages fonctionnent sans réseau, car tout — y compris les deux binaires WebAssembly — est servi depuis leur propre domaine. Il vaut aussi la peine de préciser ce que nous avons appris en route : un service worker enregistré ne signifie pas prise en charge hors ligne. Au premier chargement, la page et ses ressources sont récupérées avant que le worker ne prenne le contrôle, donc son handler ne les voit jamais. La page signale ses propres ressources via l’API Performance au lieu de supposer.

Exemple illustratif

L’horaire d’une station, sur un écran que personne ne touche

Un scénario d’utilisation, sans données client ni résultats commerciaux attribués.

Situation initiale

Un écran dans une station ou une vitrine doit donner aux passants un fichier — l’horaire complet, le menu, un formulaire — sans WiFi public, sans compte et sans que quelqu’un touche à quoi que ce soit.

Comment ça fonctionne

L’écran affiche un carrousel : 36 images à 12 par seconde, un tour de trois secondes qui se répète à l’infini. La densité est fixe pendant le carrousel, car un tour n’est une promesse que si sa longueur est respectée. La longueur du tour circule dans chaque image, donc un téléphone qui capture le premier code sait immédiatement combien de temps dure l’ensemble.

Rezultatul

Le passant filme trois secondes et obtient 25 KB reconstruits dans son navigateur, vérifiés avec SHA-256, à partir d’un seul code noir et blanc simple. L’écran ne sait pas qu’il a été lu et ne peut pas le savoir.

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és de collaboration

MEGA QR, dans le contexte de votre organisation.

Points d’accès et transfert local

Codes pour l’accès à des informations publiques, à des instructions ou à des contacts ; transfert optique de fichiers entre appareils compatibles, avec évaluation des politiques de sécurité de l’institution.

Entreprises privées

Nous définissons un pilote autour d’un processus réel : utilisateurs, données, intégrations, coûts et critères d’acceptation. L’extension suit après l’évaluation du résultat.

Institutions et entreprises publiques

Nous établissons les exigences d’accessibilité, d’hébergement, de protection des données et d’interopérabilité. Toute connexion avec des services AGE ou STISC nécessite la validation de l’éligibilité, de l’accès et des approbations.

Ce sont des scénarios d’adaptation, non des déclarations sur des contrats ou partenariats existants. Les fonctions proposées sont confirmées dans le périmètre de travail du projet.

Discuter d'un pilote

Faisant partie d’un écosystème.

Qu'est-ce que vous voudriez voir mieux fonctionner ?

Racontez-nous votre processus. Ensemble, nous décidons ce qui vaut la peine d'être construit, ce que nous pouvons connecter et comment nous vérifions le résultat.

Discutons