Saltar para o conteúdo
megapromotingVamos falar
Produtos MEGA QR

Ferramentas no navegador Instrument public

Um código QR. Ou um ficheiro que passa pela luz.

MEGA QR inclui um gerador de códigos e uma ferramenta de transferência óptica. Você cria um código para link, Wi-Fi ou contacto; para a transferência, um ecrã apresenta uma sequência de códigos que a câmara do outro dispositivo reconstrói num ficheiro.

Generatorul MEGA QR: tipurile de cod, câmpul de conținut completat cu o adresă și codul QR generat alături
qr.megapromoting.com · o código é composto no navegador, a partir do endereço escrito no campo de conteúdo

MEGA QR

Da informação ao trabalho feito.

01

Pregătești

Você escolhe o conteúdo do código ou o ficheiro que quer transmitir.

02

Afișezi

O gerador produz a imagem QR. A transferência óptica apresenta frames sucessivas.

03

Scanezi

A câmara lê o código ou reúne frames até poder reconstruir o ficheiro.

Onde se torna útil.

Gerador QR

Link, Wi-Fi, contacto e outros tipos de conteúdo; exportação PNG ou SVG.

Transferência óptica

Dados transmitidos entre ecrã e câmara, sem uma ligação de rede entre dispositivos.

Processamento local

A geração e a reconstrução são feitas no navegador, sem uma conta de utilizador.

A transferência óptica depende da câmara, da luz, da distância e do ecrã. O dispositivo que transmite não recebe a confirmação da receção. Um código exibido publicamente pode ser lido por quem o vê.

MEGA QR em detalhe

O que você pode fazer com este projeto.

MEGA QR são duas ferramentas no mesmo domínio, e a segunda não se parece nada com a primeira. O gerador cria códigos QR para oito tipos de conteúdo: link, texto, WiFi, cartão de visita, WhatsApp, email, SMS, telefone e coordenadas. A transferência ótica move um ficheiro inteiro de um ecrã para uma câmara, sem cabo, sem Bluetooth, sem rede entre os dois dispositivos.

Ambas funcionam integralmente no navegador. As páginas não fazem qualquer pedido a terceiros, e os dois binários WebAssembly de que depende a transferência são servidos de public/wasm/, não de um CDN — caso contrário, a promessa de que nada sai do dispositivo seria falsa. Uma palavra-passe de WiFi escrita no gerador nunca chega a um servidor.

A ideia que vale a pena entender sobre a transferência: um ecrã emite luz, uma câmara lê-a, e o recetor não tem como pedir nada de volta. Não existe canal de retorno. Desse facto decorre todo o resto — os frames descrevem-se a si próprios, a sua ordem não importa, qualquer subconjunto suficientemente grande reconstrói o ficheiro, e o emissor nunca pode saber se chegou alguma coisa.

01

Gerador: oito tipos, PNG e SVG, logótipo no centro

Link, texto, WiFi, vCard, WhatsApp, email, SMS, telefone e geolocalização. Quando coloca um logótipo, o nível de correção de erros passa forçadamente para H, o mais alto — um logótipo faz um buraco na zona de dados e o código não sobrevive de outra forma. O logótipo está limitado a 35% da superfície, com aviso a partir de 30%. A exportação é renderizada separadamente da pré-visualização, para que um PNG de 4096 px não perturbe o que está no ecrã.

02

Os diacríticos não se perdem

A biblioteca de geração, qr-code-styling 1.9.2, converte o texto com charCodeAt(i) & 0xFF e corta em silêncio cada diacrítico romeno e todo o cirílico: „Ștefan Țurcanu” era lido de volta como „tefan urcanu”. Nós codificamos em UTF-8 antes de ela o ver, para que o seu truncamento já não tenha o que cortar. Os payloads WiFi e vCard também são escapados — um „;” numa palavra-passe ou uma vírgula num nome de empresa corrompiam de outra forma o código, sem qualquer sinal.

03

Transferência ótica: fonte de códigos, não uma sequência

O ficheiro é embalado num envelope (nome, tipo MIME, tamanho, SHA-256), comprimido com gzip se ficar menor, e depois passado por RaptorQ (RFC 6330). Cada frame traz um cabeçalho fixo de 20 octetos e um ou mais pacotes. Não importa quais frames capta, importa quantos: qualquer subconjunto suficientemente grande reconstrói o ficheiro. Medido em pixels renderizados reais, a sobrecarga do RaptorQ é 1,000x — os códigos LT usados pelos projetos de referência exigem 1,15x.

04

Carrossel: um ecrã público em que ninguém carrega em nada

O segundo modo de envio é uma volta fixa que se repete infinitamente, sem sessão e sem alguém a carregar em start. O comprimento da volta viaja em cada frame, por isso um transeunte que aponta a câmara sabe, pelo primeiro código captado, quanto tempo tudo demora, em vez de ver um indicador. A configuração de referência é 36 frames a 12 por segundo — uma volta de três segundos que leva 25 KB de um único código preto e branco simples. Um menu inteiro, ou o horário completo de uma estação.

05

Adapta-se à câmara que observa, em três eixos separados

O número de códigos no ecrã, a cor e a versão QR são três limitações diferentes e ajustam-se separadamente. A escala de densidade tem 29 níveis, de v10 numa única banda (7 KB/s a 30 frames por segundo) até v39 em quatro bandas em cor (959 KB/s). Existe também uma escala completa sem cor, até 320 KB/s, porque uma câmara cuja crominância morre não deve ficar presa a uma única banda.

Dados e funcionamento

O que entra no sistema. O que deve ser verificado.

Nada sai do dispositivo
O gerador constrói o código na página. A transferência reconstrói o ficheiro no browser do recetor. As páginas não fazem pedidos a terceiros, e os binários WebAssembly (raptorq para o código fonte, zxing-wasm para a decodificação) são servidos localmente. Não existe conta, não existe sessão no servidor, não existe registo do que transmitiu.
Um QR não é um segredo
Qualquer pessoa que veja o código com clareza suficiente pode lê-lo. Isso também se aplica à transferência ótica: um ecrã que mostra frames é visível para qualquer câmara na sala. Um ambiente isolado de rede não significa automaticamente que a transferência ótica seja permitida — é a política da organização que decide, não a topologia da rede.
A integridade é verificada, não assumida
O envelope transporta o SHA-256 completo do ficheiro original, e o cabeçalho transporta os primeiros quatro octetos do mesmo como soma de controlo rápida. Após a reconstrução, o recetor recalcula o hash completo e lança um erro de incompatibilidade se diferir. Um ficheiro que sai da transferência é ou bit a bit igual ao de entrada, ou uma falha declarada. Não existe terceira variante.
Limite de 32 MB, e o seu motivo
Acima de 32 MB, recusamos o ficheiro na seleção. O codificador RaptorQ materializa todos os pacotes de uma vez e corre de forma síncrona no fio principal — medido em 2,5 segundos para 32 MB num computador, várias vezes mais num telemóvel. Nesse intervalo, o botão Stop é desenhado e não pode ser pressionado. Uma recusa precoce é mais honesta do que um separador que morre aos 80%.

Da exploração à implementação

Como preparamos um projeto com MEGA QR.

01

Escolhemos qual das duas ferramentas é a resposta

Um código QR leva a conteúdo curto e, se for uma ligação, a uma página que você pode alterar mais tarde — o código impresso não muda sozinho de destino. A transferência ótica move um ficheiro entre dois dispositivos que não têm permissão ou não conseguem comunicar pela rede. São tarefas diferentes e a confusão entre elas é a mais frequente.

02

Fixamos as condições físicas

Para impressão: contraste, dimensão final, área livre em redor, testado no tamanho em que vai ser colado. Para transferência: quão grande cai um módulo no sensor da câmara. Sob um modelo duro de lente (grelha de crominância deslocada em um pixel mais uma desfocagem 3x3), a cor devolve todos os três códigos a 4 pixels de dispositivo por módulo e absolutamente nada a 2. Esse é o limite real, e por isso a cor é a escolha do homem, não do controlador.

03

Testamos nos dispositivos que serão usados de facto

A nossa suíte passa por uma cadeia de câmara autêntica — os frames são escritos como YUV 4:2:0 e dados ao Chrome como webcam falsa, por isso a subamostragem de crominância é real. O que não tem: objetiva, reflexos, movimento, obturador rolante. Dez minutos com um telemóvel verdadeiro dão a primeira cifra honesta e são o próximo passo na nossa lista de trabalho, não um detalhe.

Perguntas que vale a pena esclarecer.

Quão depressa passa efetivamente um ficheiro?

Numa cadeia de câmara simulada, a 10 frames por segundo, com os códigos a preencher a maior parte da imagem a 3-5 pixels de câmara por módulo, as quatro configurações saíram com hash verificado: preto e branco numa banda 15,8 KB/s, preto e branco em quatro bandas 37,7 KB/s, cor numa banda 40,1 KB/s, cor em quatro bandas 115,7 KB/s. A cor numa só banda bate o preto e branco em quatro. A taxa de falha foi zero em todo o lado. Repare de onde vêm os números: frames geométricos perfeitos, sem objetiva e sem movimento. Um telemóvel verdadeiro ainda não foi colocado à frente deles.

O que exige da câmara e da luz?

A câmara é pedida a 1920x1080 a 30 frames por segundo, com preferência pela traseira; se o Android recusar a restrição, caímos em qualquer câmara. Cada frame capturado é reduzido a 1280 px no lado longo antes da decodificação. O que conta verdadeiramente não é a resolução, mas quantos pixels do sensor caem num módulo: o preto e branco precisa de aproximadamente três, a cor de aproximadamente o dobro, porque a cadeia de vídeo do telemóvel normalmente entrega 4:2:0 e reduz pela metade ambos os planos de cor em ambas as direções. O detalhe fino de cor é a primeira coisa que uma câmara real destrói.

Porque é que o modo automático é mais lento do que a máquina consegue?

Porque a única coisa que o dispositivo que envia consegue medir é quantos símbolos produziram os seus próprios codificadores face a quantos lhe foram pedidos — uma afirmação sobre um processador, não sobre uma câmara a dois palmos. Um portátil nunca falha um degrau, por isso um controlador que lê “zero falhas” como “continua” sobe até ao topo e põe no ecrã quatro códigos que mudam trinta vezes por segundo, que nada consegue escanear. Isso foi mesmo entregue uma vez e uma pessoa encontrou-o num minuto. Agora o modo automático está limitado a uma banda, preto e branco, versão 26 e 15 frames por segundo. 15 não é um número redondo: uma câmara de telemóvel grava a 30 e não está sincronizada com o ecrã, por isso um frame tem de ficar exibido duas exposições consecutivas — 67 ms — para ser apanhado por inteiro.

O que acontece se o recetor falhar frames?

Nada de especial, e é esse o ponto. Não existem números de ordem para recuperar. O codificador produz pacotes de reparação na proporção de 2x face aos símbolos de origem — medido neste código: a 60% de perda de frames, um conjunto de cerca de 2x K recupera 2 MB sem que a lista seja reproduzida uma segunda vez. O teto absoluto é 60.000 pacotes; acima disso, o remetente simplesmente retoma a lista com mais frequência, o que custa tempo, não memória. Se, ainda assim, algo correr mal, o hash SHA-256 deteta isso e a transferência falha de forma declarada em vez de entregar um ficheiro corrompido.

O remetente sabe quando o ficheiro chegou?

Não, e não é uma falha. Não existe canal de retorno — um ecrã emite luz, e a luz não volta com confirmações. A conclusão vê-se no dispositivo que recebe. Qualquer interface que afirmasse o contrário estaria a mentir, e já tivemos uma vez um teste que oferecia exatamente essa prova que o produto nunca tem: a simulação calculava a sua taxa de falha a partir do que a câmara simulada conseguia resolver. Esse é um canal de retorno. Quando um teste e o código entregue não concordam sobre o que pode ser sabido, o teste é que mente.

Qual é o tamanho máximo do ficheiro e porquê tanto?

32 MB, rejeitado na seleção se for maior. O limite não vem do protocolo, mas da memória de um separador do navegador: o RaptorQ materializa todos os pacotes de uma vez, e um ficheiro de 50 MB com rácio 2x implicaria 150 MB de matrizes vivas, suficiente para matar o separador de um telefone. A codificação corre de forma síncrona no thread principal, medida em 2,5 segundos para 32 MB no computador. O que viaja efetivamente não é o tamanho do ficheiro: o envelope é comprimido com gzip antes do RaptorQ, por isso uma tabela de 1 MB é apenas alguns kilobytes de pacotes, e uma fotografia de 1 MB é um megabyte de pacotes.

Preciso de conta ou de internet?

Nem uma coisa nem a outra. Não existe conta e não existe assinatura. Depois da primeira visita, as páginas funcionam sem rede, porque tudo — incluindo os dois binários WebAssembly — é servido do próprio domínio. Vale também dizer o que aprendemos pelo caminho: um service worker registado não significa suporte offline. No primeiro carregamento, a página e os respetivos recursos são trazidos antes de o worker assumir o controlo, por isso o seu handler nunca os vê. A página reporta os seus próprios recursos através da Performance API em vez de assumir.

Exemplo ilustrativo

O horário de uma estação, num ecrã em que ninguém carrega em nada

Um cenário de utilização, sem dados de cliente nem resultados comerciais atribuídos.

Situação inicial

Um ecrã numa estação ou numa montra tem de dar aos transeuntes um ficheiro — o horário completo, o menu, um formulário — sem WiFi público, sem conta e sem que alguém carregue em algo.

Como funciona

O ecrã executa um carrossel: 36 fotogramas a 12 por segundo, uma volta de três segundos que se repete indefinidamente. A densidade é fixa durante o carrossel, porque uma volta é uma promessa só se o seu comprimento se mantiver. O comprimento da volta viaja em cada fotograma, por isso um telemóvel que apanha o primeiro código sabe de imediato quanto tempo tudo dura.

Rezultatul

O transeunte filma três segundos e recebe 25 KB reconstruídos no seu navegador, verificados com SHA-256, a partir de um único código simples a preto e branco. O ecrã não sabe que foi lido e não tem como saber.

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.

Possibilidades de colaboração

MEGA QR, no contexto da sua organização.

Pontos de acesso e transferência local

Códigos para acesso a informação pública, instruções ou contactos; transferência ótica de ficheiros entre dispositivos compatíveis, com avaliação das políticas de segurança da instituição.

Empresas privadas

Definimos um piloto em torno de um processo real: utilizadores, dados, integrações, custos e critérios de aceitação. A expansão segue após a avaliação do resultado.

Instituições e empresas públicas

Estabelecemos os requisitos de acessibilidade, alojamento, proteção de dados e interoperabilidade. Qualquer ligação a serviços AGE ou STISC requer a validação da elegibilidade, do acesso e das aprovações.

Estes são cenários de adaptação, não declarações sobre contratos ou parcerias existentes. As funções propostas confirmam-se no âmbito de trabalho do projeto.

Fale sobre um piloto

Parte de um ecossistema.

O que gostaria que funcionasse melhor?

Conte-nos o seu processo. Em conjunto decidimos o que vale a pena construir, o que podemos ligar e como verificamos o resultado.

Vamos falar