1. Você escolhe a imagem
O navegador recebe o arquivo pelo seletor ou arraste. A página valida o tipo e tenta decodificar os pixels.
( Arquitetura explicada )
Este mapa separa o caminho dos pixels dentro do navegador das conexões técnicas, de medição ou publicidade que a página pode fazer.
As setas abaixo representam a sequência funcional observada no editor. Cada cartão descreve uma responsabilidade diferente.
O navegador recebe o arquivo pelo seletor ou arraste. A página valida o tipo e tenta decodificar os pixels.
Arquivos e ajustes do estúdio podem ficar no IndexedDB; preferências e dados temporários do fluxo usam armazenamento do navegador.
Ajustes, miniaturas e exportações são calculados localmente. O canvas apresenta a prévia; ela não é a prova da resolução final.
Resultados individuais são reunidos por uma biblioteca ZIP empacotada no próprio projeto, sem buscar código de ZIP em CDN durante a exportação.
Um endereço temporário de memória é criado para a imagem ou ZIP. A nova cópia é salva pelo mecanismo de download do navegador.
Processamento local não significa que a página inteira funciona sem rede. Esta distinção evita uma promessa de privacidade absoluta.
IndexedDB permite que o estúdio recupere arquivos e ajustes entre rotas operacionais. localStorage guarda preferências como consentimento e tema; sessionStorage transporta dados temporários da exportação. O navegador e suas políticas de armazenamento determinam quando esses dados podem ser removidos.
A descrição jurídica completa, categorias e escolhas disponíveis permanecem nas páginas de Privacidade e Cookies.
O PhotoEditor.sbs separa a renderização da interface da manipulação dos pixels utilizando Web Workers dedicados. Quando uma imagem é aberta, a thread principal do navegador decodifica o arquivo em um ImageBitmap, extrai seu ImageData e transmite o buffer binário (ArrayBuffer) para o worker em segundo plano. Essa separação garante que os controles deslizantes de exposição, contraste, temperatura e curvas permaneçam fluidos mesmo ao calcular transformações sobre milhões de pixels.
As transformações de cor operam diretamente sobre matrizes tipadas com limitação de 8 bits (Uint8ClampedArray). Por exemplo, tabelas de busca de curvas de tom e misturadores de canal percorrem a memória contígua com contenção nativa de inteiros, o que evita artefatos de transbordamento de pixel sem o custo computacional de conversões em ponto flutuante. As prévias são desenhadas em superfícies HTML5 Canvas de alta resolução, ajustando-se à proporção da tela enquanto a resolução original é mantida intacta para a exportação final.
A liberação de memória é gerenciada com rigor durante sessões de edição prolongadas. Ao alternar imagens ou concluir a exportação de um lote, os endereços temporários de memória são descartados via URL.revokeObjectURL(), e os buffers desatualizados são liberados para coleta de lixo pelo navegador. Esse ciclo de vida local evita o esgotamento de memória e fechamentos involuntários da aba.