Girar e espelhar imagens

Gire fotos em passos de 90°, espelhe na horizontal ou vertical e procese o lote para PNG, JPEG ou WebP com as dimensões na hora.

Girar e espelhar acontecem localmente no seu navegador. Suas imagens nunca saem do dispositivo.

Lote de giro e espelhamento

Solte suas imagens aqui

PNG, JPEG, WebP ou GIF — adicione quantas quiser. Clique para escolher.

Como funciona

Cada imagem é decodificada uma vez em um elemento Image. Cada linha guarda um estado simples — um contador de quartos de volta mais duas flags de espelhamento — e os botões o alteram ali mesmo, então dá para empilhar operações (direita, direita, espelhar-H) com o contador W × H atualizando na hora. Os downloads passam esse estado por uma única rodada de canvas.

A matemática da transformação
Para uma rotação de r graus com saída ow × oh, a sequência no canvas é translate(ow/2, oh/2), rotate(r), scale(±1, ±1) e drawImage(img, −w/2, −h/2). Como a origem fica no centro do canvas, esses deslocamentos de meia largura e meia altura enquadram perfeitamente o retângulo girado em 90°, 180° e 270°.
Por que W × H troca
Em 90° e 270° a borda longa vira vertical, então o canvas de saída é montado com largura = altura original e altura = largura original. O selo de cada linha recalcula isso na hora, e é por isso que uma captura deitada vira retrato sem nenhum recorte.
Operações incrementais nos eixos da tela
Depois de um número ímpar de quartos de volta, o eixo horizontal do arquivo está vertical na tela. Por isso um clique em Horizontal alterna a flag vertical quando a rotação é 90°/270°: "Horizontal" descreve sempre a direção que você vê, não a armazenada, e qualquer combinação dos quatro botões cai em uma das oito simetrias do retângulo.

Perguntas frequentes

Um giro de 90° é sem perdas?

Em nível de pixel, sim — cada pixel de origem é copiado para a nova posição, sem recorte nem reamostragem, então a geometria é exata. A ressalva honesta é a codificação: toda exportação (PNG, JPEG, WebP) é uma codificação nova, e JPEG/WebP ainda quantizam na qualidade escolhida. Girar um JPEG já comprimido para PNG fica perfeito nos pixels mas pesa mais; girar JPEG→JPEG em alta qualidade é uma segunda geração com perdas, rara de notar, mas real.

Posso girar em ângulos arbitrários?

Não — só passos de 90°. Giro livre exigiria reamostrar cada pixel numa grade nova e preencher vazios nos cantos, o que suaviza a imagem. Os quatro giros retos são exatamente o que sensores de celular, formulários e páginas escaneadas precisam, e mantêm dimensões em pixels inteiros.

Os espelhamentos combinam certo com as rotações?

Sim. Cada botão se aplica incrementalmente ao estado atual, e os espelhamentos horizontal/vertical são interpretados na tela — depois de girar 90°, o botão Horizontal espelha na direção que você agora vê como horizontal, como qualquer leitor esperaria, e não pelos eixos internos do arquivo.

Quantas imagens posso processar de uma vez?

Não há limite rígido, mas tudo fica decodificado na memória. Uma dúzia de fotos típicas de celular funciona bem; cem arquivos de 48 megapixels podem esgotar uma aba do navegador. Baixe cada resultado, use Remover nas linhas concluídas, e o ZIP é montado sob demanda no momento do clique.

Algo é enviado para um servidor?

Não. Decodificação, matemática de canvas, reencodificação e montagem do ZIP acontecem no seu dispositivo. A única dependência de rede é a biblioteca JSZip carregada de um CDN — se ela estiver indisponível (offline ou bloqueada), a ferramenta avisa e os downloads arquivo a arquivo continuam funcionando.