Assinatura do arquivo
- Entrada
- bytes 47 49 46 38 39 61
- Saída esperada
- GIF89a, versão que suporta transparência e animação
A variante GIF87a (bytes terminando em 37 61) existe mas não define animação nem transparência.
frames de GIF animado
Um GIF animado não guarda cada quadro como uma imagem completa e independente: a maioria dos quadros armazena só a diferença em relação ao anterior, junto com um tempo de exibição e uma instrução de "descarte" que diz o que fazer com a área do quadro depois de mostrá-lo. Extrair frames de verdade significa reconstruir essa composição quadro a quadro, não apenas separar blocos de dados brutos do arquivo.
A variante GIF87a (bytes terminando em 37 61) existe mas não define animação nem transparência.
A regra "≤10 vira 100" reproduz o que todo navegador já faz ao tocar o GIF, então o frame extraído bate com o tempo real de exibição.
É o único dos 4 modos que exige guardar uma cópia da tela ANTES de desenhar o quadro atual.
Você escolhe: PNG (sem perdas, preserva a transparência comum em GIFs), JPG (arquivos menores, sem transparência) ou WebP. Cada quadro vira um arquivo numerado pela ordem na animação e prefixado com o nome do arquivo original, todos reunidos em um único .zip.
Porque a maioria dos quadros de um GIF armazena só a área que mudou em relação ao quadro anterior, não a imagem inteira. Extrair o bloco de dados bruto sem seguir o método de descarte de cada quadro (que diz se a tela deve ser limpa, mantida ou restaurada entre um quadro e outro) produz uma composição incompleta.
Se o arquivo original tem atraso de 0 ou 1 centésimo de segundo por quadro, todo navegador (e este extrator) arredonda esse valor para 100 ms, porque um "atraso zero" quase sempre é um erro de exportação do software que criou o GIF, não uma intenção real de rodar a 1000 quadros por segundo.
O padrão é até 300 quadros por extração, um teto pensado para não estourar a memória do navegador, já que cada quadro é decodificado como uma imagem RGBA completa. GIFs com mais quadros que isso podem ser extraídos em faixas, usando o intervalo inicial/final.
O GIF é decodificado por um código próprio escrito para este site, que funciona em qualquer navegador. APNG, WebP animado e AVIF animado dependem da API `ImageDecoder` nativa do navegador, que nem todo navegador implementa, então esses formatos podem mostrar um erro de "formato não suportado" onde o GIF funcionaria normalmente.
A extração acontece inteiramente no seu navegador. Nenhum arquivo é enviado a qualquer servidor.