Como a conversão de imagens no navegador realmente funciona (e por que eu construí assim)
Dov Azencot
@DovAzencotA razão de todo este site existir é um pequeno e bobo momento de desconforto que tive anos atrás. Eu precisava converter uma foto HEIC para JPG, digitei a coisa óbvia na barra de busca, e caí num conversor que queria que eu enviasse minha imagem para o servidor dele. Então eu enviei. Funcionou. E aí fiquei ali pensando: essa foto agora está numa máquina qualquer sobre a qual eu não sei nada, operada por gente que eu nunca vou conhecer, guardada por um tempo que nunca me disseram. Para um print qualquer, tudo bem. Mas não era um print. Era uma foto pessoal, e eu tinha acabado de entregá-la a estranhos para economizar trinta segundos.
Esse é o problema que eu decidi não ter mais. A resposta acabou sendo que o envio nunca foi necessário para começar.
O jeito antigo: alugar o computador de um estranho
Um conversor online tradicional funciona como um serviço de encomenda pelo correio. Você manda seu arquivo para cima, para um servidor. O servidor roda a conversão usando um software instalado na máquina dele. Ele manda o resultado de volta para baixo. Sua imagem fez uma viagem de ida e volta por um hardware que você não controla, e em algum ponto no meio ela ficou parada, inteira, num disco que não é seu.
Toda promessa de privacidade parafusada nesse modelo é uma promessa sobre comportamento — o arquivo é apagado depois de uma hora, ninguém olha. Talvez isso se sustente. Talvez sim. Você não tem como verificar, e está confiando os bytes de verdade do seu arquivo. A confiança é a arquitetura inteira, e confiança é exatamente a coisa que eu não queria estar gastando.
O jeito novo: seu navegador já tem o computador
Aqui está o que mudou. Navegadores modernos conseguem rodar programas reais e compilados em velocidade quase nativa, por meio de algo chamado WebAssembly — WASM, para encurtar. Os codecs de imagem que antes moravam num servidor — o código que lê um PNG, que codifica um WebP, que decodifica HEIC — podem ser compilados para WASM e rodar dentro da aba do navegador que você já tem aberta.
Então, quando você solta um arquivo numa página construída assim, o software de conversão baixa para a sua máquina, uma vez, como qualquer outra parte da página web. Dali em diante o trabalho de verdade — ler sua imagem, transcodificá-la, escrever o novo arquivo — acontece no seu próprio processador, na sua própria memória. O resultado é devolvido direto para você como um download. Seu arquivo nunca é enviado para lugar nenhum, porque não há para onde enviar. Não existe servidor no circuito, ponto final.
É por isso que eu posso dizer que seus arquivos nunca saem do seu dispositivo e falar isso como um fato, não como uma política. Não é que eu prometo não olhar. É que não existe caminho pelo qual sua imagem chegue até mim. Eu não conseguiria recuperar sua foto nem que um juiz mandasse, porque ela nunca esteve do meu lado do fio. A privacidade não é um recurso que eu coloquei por cima. É uma consequência de onde o código roda.
Como você pode conferir que é verdade
Você não precisa acreditar na minha palavra, e essa é a parte de que eu mais gosto. Abra as ferramentas de desenvolvedor do seu navegador, observe a aba de rede e converta um arquivo. Você vai ver a página e o codec WASM baixarem uma vez. Você não vai ver sua imagem subir. Melhor ainda: carregue a página, desligue seu Wi-Fi e converta algo mesmo assim. Continua funcionando, porque tudo de que ele precisa já está na sua máquina. Uma ferramenta que envia seus arquivos não consegue fazer isso. Esta consegue.
A única limitação real
Prometi honestidade, então aqui está. Rodar a conversão no seu próprio dispositivo significa que ela usa a sua própria memória, e uma aba de navegador não ganha memória infinita para brincar.
Para arquivos normais — fotos, prints, logos, o que as pessoas convertem o dia inteiro — isso é um não problema. Mas se você jogar nele algo genuinamente descomunal, uma única imagem em resolução extrema, ou um lote gigante de uma vez, você pode bater no teto. Decodificar uma imagem significa segurar os pixels descomprimidos dela na memória, o que é muito maior que o arquivo no disco, e uma imagem gigante pode esgotar o que a aba tem permissão de usar. Quando isso acontece, a conversão fica lenta a ponto de arrastar ou a aba desiste.
Um servidor com 64 GB de RAM nunca tem esse problema. Então aí está a troca, dita sem rodeios: um conversor no servidor consegue mastigar arquivos maiores do que seu dispositivo jamais conseguiria dar conta. Esta abordagem não consegue. O que ela te dá em troca é que seu arquivo nunca sai das suas mãos. Para a esmagadora maioria do que as pessoas de fato convertem, é uma troca que vale a pena sem pensar duas vezes. Para um raro arquivo monstro, é um limite real, e eu prefiro te contar a fingir que ele não existe.
Por que eu ainda acho que é o padrão certo
A maioria das conversões são arquivos comuns que nunca precisaram tocar um servidor para começar. O envio sempre foi um resquício de uma era em que os navegadores não conseguiam fazer esse trabalho sozinhos. Agora conseguem. Então o padrão sensato se inverteu: mantenha o arquivo na sua máquina, faça o trabalho localmente, e só recorra a um servidor na rara ocasião em que seu próprio hardware genuinamente não dá conta.
É essa a ideia inteira por trás de tudo que tem aqui. É o mesmo site que eu construí para mim mesmo depois daquela tarde desconfortável, para nunca mais ter que entregar uma foto pessoal a um estranho só para mudar a extensão do arquivo. Acontece que eu nunca precisei. Você também não precisa.
Artigos relacionados
Por que eu converto PNG para WebP (e a única vez em que não converto)
PNG é ótimo para editar e um desperdício para publicar. Aqui está o que o WebP realmente economiza, onde ele não muda nada e a única regra que eu nunca quebro.
PNG ou JPG? A regra de dez anos que eu uso para decidir
Sem perdas contra com perdas, bordas contra fotografias, transparência contra nenhuma. Uma pergunta simples diz qual formato um arquivo deve ser — com uma tabela de tamanho real para provar.
Por que suas fotos do iPhone são HEIC (e quando vale mais virar JPG)
HEIC é um formato de verdade melhor que metade da web ainda não consegue abrir. Aqui está por que a Apple escolheu ele, o que você de fato perde ao converter para JPG e quando eu não me incomodo.
Todos os artigos