Eu queria um conversor de imagens simples que não enviasse meus arquivos para lugar nenhum. Toda ferramenta que encontrava ou exigia cadastro, ou cobria o botão de download com anúncios, ou enviava silenciosamente minhas fotos para um servidor que eu não controlava. Então construí o meu próprio, e a IA escreveu a maior parte do código.

A ideia

O conceito central é simples: compilar uma biblioteca de imagens C++ comprovada para WebAssembly, de modo que ela rode diretamente no navegador. Sem servidor, sem envio, sem comprometer a privacidade. A biblioteca gráfica Magnum já oferece suporte a dezenas de formatos de imagem por meio de uma arquitetura de plugins limpa. A questão era se eu conseguiria envolvê-la em uma interface web utilizável em um único fim de semana.

Onde a IA ajudou

Usei um assistente de programação com IA para cerca de 80% do trabalho de front-end. As coisas que ele fez bem:

  • Estrutura de HTML/CSS: a interface de arrastar e soltar, o layout responsivo e a estilização foram gerados em minutos
  • Código JavaScript de ligação: a configuração do Web Worker, o manuseio de arquivos e o acionamento do download foram simples para a IA produzir
  • Metadados de SEO: as tags Open Graph, as meta descrições e a geração do sitemap foram criadas a partir de um único prompt
  • Migração para o Astro: passar de HTML estático para um site estático em Astro com rotas dinâmicas e layouts compartilhados

Onde a IA não ajudou

O lado do C++ e do Emscripten foi mais difícil. Configurar o sistema de build CMake, escolher os plugins certos do Magnum, lidar com a alocação de memória entre JavaScript e WASM: isso exigia um conhecimento de domínio que a IA conseguia aproximar, mas não acertar de forma confiável na primeira tentativa. Passei a maior parte do tempo depurando problemas de build e vazamentos de memória, não escrevendo HTML.

A lição: a IA é excelente para gerar código repetitivo e padrões bem documentados. Ela tem dificuldade com cadeias de ferramentas de nicho e depuração de baixo nível. Use-a onde ela é forte; assuma você mesmo as partes difíceis.

A stack

Veja o que move o WebConverter.app:

  • C++ / Magnum: decodificação e codificação de imagens testadas em campo (PNG, JPEG, BMP, TGA, HDR, EXR, KTX2 e mais)
  • Emscripten: compila C++ para WebAssembly, com suporte a SIMD e threads para navegadores modernos
  • Web Workers: quatro workers paralelos cuidam das conversões em lote sem bloquear a interface
  • Astro: gerador de sites estáticos que produz HTML limpo com zero sobrecarga de framework no lado do cliente
  • GitLab CI: builds automatizados tanto para o front-end em Astro quanto para o runtime do Emscripten

O que eu faria diferente

Começar com o Astro desde o primeiro dia. A versão inicial era HTML escrito à mão e duplicado em todas as páginas de conversão. Migrar para o Astro com layouts compartilhados e rotas orientadas a dados eliminou centenas de linhas de duplicação e tornou trivial adicionar novos formatos.

Eu também configuraria testes de ponta a ponta mais cedo. Um módulo WASM quebrado é invisível até alguém realmente tentar converter um arquivo. Testes automatizados que soltam um arquivo e verificam a saída teriam detectado problemas dias antes.

Experimente você mesmo

O WebConverter.app é gratuito. Você pode converter imagens para PNG, JPEG, BMP e vários outros formatos, tudo sem enviar um único byte.

Experimente o WebConverter.app: conversão de imagens gratuita, instantânea e sem envio.

Pronto para converter suas imagens?

Experimente a WebConverter de Graça