Quantas cores um GIF pode ter?
Até 256 por paleta. Cada pixel armazena um índice de 8 bits (0–255) que aponta para uma tabela de cores, e cada entrada da tabela é uma cor RGB de 24 bits. Assim, as 256 cores podem ser quaisquer 256 das 16,7 milhões de cores RGB.
Os tamanhos de paleta são potências de dois: 2, 4, 8, 16, 32, 64, 128 ou 256 entradas. Um GIF pode ter uma paleta global para o arquivo inteiro e uma paleta local para qualquer quadro. Com paletas locais, uma animação pode usar cores diferentes em quadros diferentes, mas um quadro normal continua mostrando no máximo 256. (Um truque raro empilha várias subimagens por quadro para exibir mais cores, mas os arquivos ficam enormes e alguns apps os exibem incorretamente.)
Por que os GIFs suportam apenas 256 cores
O formato GIF foi projetado em 1987, quando 256 cores eram consideradas generosas para monitores de computador. Ele usa cor indexada de 8 bits: cada pixel armazena um índice (0–255) que referencia uma cor em uma tabela de consulta (a paleta). A paleta contém até 256 cores, cada uma definida como um tripleto RGB.
O insight-chave: essas 256 cores podem ser quaisquer 256 cores do espaço de cor RGB completo de 16,7 milhões. Um GIF de um pôr do sol pode usar 256 tons de laranja, vermelho e roxo. Um GIF de uma floresta pode usar 256 tons de verde. O desafio é escolher as 256 cores certas para o seu conteúdo específico.
Por que a seleção da paleta importa
Uma paleta «web-safe» genérica utiliza um conjunto fixo de 216 cores distribuídas pelo espectro. Para conteúdo de vídeo, isso produz resultados ruins porque as cores podem não corresponder ao seu vídeo de forma alguma.
Uma paleta personalizada analisa os pixels reais do seu vídeo e seleciona as 256 cores que melhor representam o conteúdo. A melhoria é dramática — as cores parecem naturais, os gradientes ficam mais suaves e os detalhes são preservados.
Nosso conversor usa a abordagem de dois passos do FFmpeg: primeiro analisa o vídeo para gerar uma paleta ideal (palettegen), depois aplica essa paleta para criar o GIF (paletteuse). Isso produz resultados significativamente melhores do que ferramentas de um único passo.
Métodos de geração de paleta
Modo full (stats_mode=full)
Analisa todos os pixels de todos os quadros para construir uma única paleta global. Ideal para vídeos com conteúdo diverso e variável, como trechos de filmes, sequências de ação e videoclipes musicais, nos quais as cores variam entre quadros.
Modo diff (stats_mode=diff)
Conta apenas os pixels que mudam entre os quadros. Melhor para vídeos com fundos estáticos, como gravações de tela, apresentações e vídeos estilo talking-head. Produz arquivos menores porque aloca mais entradas de paleta para o conteúdo variável e menos para o fundo estático.
Modo single (stats_mode=single)
Cria uma nova paleta para cada quadro. Oferece a maior qualidade possível, já que cada quadro recebe uma paleta otimizada, mas produz arquivos maiores. Ideal para conteúdo fotográfico em que a precisão das cores é crítica.
Compromissos da contagem de cores
| Cores | Qualidade | Economia de tamanho | Ideal para |
|---|---|---|---|
| 256 | Melhor possível | Referência | Conteúdo fotográfico |
| 128 | Mal se nota a diferença | 15–25 % | Ponto ideal para a maioria dos conteúdos |
| 64 | Leve banding | 30–45 % | Gravações de tela |
| 32 | Posterização perceptível | 45–60 % | Apenas gráficos simples |
| 16 | Degradação significativa | 60–75 % | Logos, pixel art |
Dithering: simulando as cores ausentes
O dithering usa padrões das cores disponíveis para simular cores que não estão na paleta. É a diferença entre um banding abrupto de cores e gradientes de aparência suave.
- Sem dithering: mapeia cada pixel para a cor de paleta mais próxima. O mais rápido, arquivos menores, mas mostra banding visível em gradientes. Ideal para conteúdo de cor lisa, como logos e pixel art.
- Bayer (ordenado): usa um padrão determinístico em hachuras. O padrão regular comprime bem, tornando-o a melhor opção quando o tamanho do arquivo é crítico. Padrão levemente visível em inspeção próxima. Menos cores e um dithering mais leve são dois dos métodos explicados em como reduzir o tamanho de um GIF.
- Floyd-Steinberg (difusão de erro): distribui o erro de quantização aos pixels vizinhos. Produz os resultados de aparência mais natural para conteúdo fotográfico. Arquivos maiores devido aos padrões de pixel com aspecto aleatório.
- Sierra2: difusão de erro aprimorada com um kernel de distribuição mais amplo. Produz resultados entre Floyd-Steinberg e Bayer tanto em qualidade quanto em tamanho. Nossa recomendação padrão.
Recomendações por tipo de conteúdo
| Conteúdo | Modo de paleta | Cores | Dithering |
|---|---|---|---|
| Gravação de tela | diff | 128 | Bayer |
| Trecho de filme | full | 256 | Sierra2 |
| Animação de logo | full | 64 | Nenhum |
| Fotografia | single | 256 | Floyd-Steinberg |
Alternativas modernas com melhor suporte a cores
Se a limitação de 256 cores do GIF for inaceitável para o seu conteúdo, considere estas alternativas:
- Animação WebP: cor de 24 bits (16,7 M de cores), transparência alfa completa, cerca de 64 % menor que GIF no modo com perdas (dados do Google). Suportado por mais de 97 % dos navegadores.
- APNG: qualidade PNG completa com cor de 24 bits e alfa de 8 bits. Mesmo suporte de navegador que o WebP. Ideal quando você precisa de transparência com cor completa.
- MP4/WebM: milhões de cores, arquivos muito menores. Use
<video autoplay loop muted playsinline>em sites.
Compare todas as opções em nossa comparação de formatos animados.
Por que meu GIF está mudando de cor?
- Uma única paleta para o clipe inteiro. Se um clipe passa de um céu azul para uma sala vermelha, uma única paleta precisa cobrir as duas cenas, então cada uma recebe menos cores exatas.
- A paleta muda entre os quadros. Com paletas por quadro, o mesmo objeto pode ser mapeado para cores ligeiramente diferentes em cada quadro, o que parece cintilação.
- O ruído do dithering se move. Os padrões de difusão de erro mudam de um quadro para outro e tremulam em áreas lisas.
- Salvar de novo um GIF existente escolhe uma nova paleta a partir de cores já reduzidas, então cada salvamento se afasta mais do original.
O conversor desta página cria uma única paleta para o clipe com o FFmpeg palettegen=max_colors=256:stats_mode=diff, de modo que as cores permanecem consistentes entre os quadros e favorecem as partes que se movem. Ele aplica dithering Sierra-2 e atualiza apenas os retângulos alterados (diff_mode=rectangle).