Um globo girando no formato GIF. Banding é perceptível no azul, devido ao gradiente áreas restritas paleta.
O Graphics Interchange Format (GIF) é uma imagem bitmap formato que foi introduzido pela CompuServe em 1987 e, desde então, entrar em uma utilização generalizada na World Wide Web, devido ao seu amplo apoio e portabilidade.
O formato suporta até 8 bits por pixel, permitindo que uma única imagem de referência uma paleta de cores distintas até 256 escolhidos a partir do 24-bit cor RGB espaço. Também suporta animações e permite uma paleta de 256 cores para cada frame. A cor torna limitação o formato GIF impróprios para reproduzir fotografias coloridas e outras imagens com cores contínua, mas é bem adequado para imagens mais simples, como gráficos ou logotipos com áreas de cor sólida.
Imagens GIF são compactados usando o Lempel-Ziv-Welch (LZW) sem perdas de compressão de dados técnica para reduzir o tamanho do arquivo sem degradar a qualidade visual. Esta compressão técnica foi patenteada em 1985. Controvérsia sobre o acordo de licenciamento entre o titular da patente, Unisys, e CompuServe em 1994 inspirou o desenvolvimento do Portable Network Graphics (PNG) padrão; desde então, todas as patentes já expiraram.
CompuServe apresenta o formato GIF, em 1987, para fornecer uma imagem colorida formato de ficheiro para download domínios, substituindo os seus anteriores rodados comprimento encoding (RLE) formato, que era preto e branco apenas. GIF se tornou popular porque utilizados LZW de compressão de dados, que foi mais eficiente que o run-length encoding que formatos como o PCX e MacPaint utilizado e bastante grande, por isso, as imagens poderão ser baixadas em um curto espaço de tempo razoável, mesmo com modems muito lentos.
A versão original do formato GIF foi chamado de 87 º. Em 1989, CompuServe concebeu uma versão melhorada, chamada 89a [1], que adicionou suporte para múltiplas imagens em um riacho, entrelaçadas e armazenamento de aplicação específicos de metadados. As duas versões podem ser distinguidos por olhar para os primeiros seis bytes do arquivo (o "número mágico" ou "assinatura"), que, quando interpretado como ASCII, deve ler-se "GIF87a" e "GIF89a", respectivamente.
GIF foi um dos primeiros dois formatos de imagem comumente usado em sites da Web, sendo o outro a preto e branco XBM. [Citação necessários] JPEG veio mais tarde com o navegador Mosaic.
O GIF89a funcionalidade de armazenamento de múltiplas imagens em um arquivo, acompanhadas de dados de controlo, é amplamente utilizado na Web para produzir animações simples. O entrelaçamento característica opcional, que armazena imagens digitalizar linhas fora de ordem, de tal forma que, mesmo parcialmente descarregado uma imagem era algo reconhecível, também contribuiu para a popularidade do MIC, [citação necessários], como um usuário poderia interromper o download, se não foi o que foi exigido .
Os criadores do formato GIF pronunciada com um suave "g", / dʒɪf /, como em "George". No entanto, muitas pessoas pronunciar MIC com uma dura "G", como em um 'dom' / ɡɪf /, [citação necessários] reflectindo a forma como é pronunciada na sua própria sigla (Graphics Interchange Format). De acordo com o criador do formato GIF, Steve WILHITE, a pronúncia deliberadamente ecos de uma marca americana amendoim, Jif, e os empregados da CompuServe, muitas vezes dizer "miudinho desenvolvedores escolher GIF", spoofing esta marca da televisão comerciais. [Citação necessários ] Esta pronúncia também foi identificado por CompuServe em sua documentação de um programa chamado exibir gráficos CompuShow [2]. Ambas as pronúncias são dadas como corretas pelo Dicionário Oxford Inglês [3] e da American Heritage Dictionary [4].
Apesar das limitações do formato GIF, ele pode ser usado para exibir animações, como esta animação de Newton Cradle demonstra.
Um exemplo de um curto GIF animação feita com uma câmera digital. O arquivo tem mais de 2MB de tamanho.
* GIFs são adequados para com arestas vivas linha arte (tais como logotipos), com um número limitado de cores. Isso leva vantagem do formato de compressão sem perdas, o que favorece áreas fixas de cor uniforme com bordas bem definidas (ao contrário do JPEG, o que favorece gradientes suaves e macios imagens).
* Em virtude da limitação geral sobre a imagem GIF paleta de 256 cores, não é normalmente utilizada como um formato de fotografia digital. Fotógrafos digitais usar imagem formatos de arquivo capaz de reproduzir uma maior gama de cores, como o TIFF, RAW ou as perdas JPEG, que é mais adequado para comprimir fotografias.
* O formato PNG é uma alternativa popular para imagens GIF melhor compressão, uma vez que utiliza as técnicas e não tem um limite de 256 cores, mas não suportam PNGs animações. O MNG APNG e formatos, ambos derivados do PNG, o apoio animações, mas não são muito utilizadas.
Um exemplo de uma imagem GIF salva com um "web-safe" e paleta com dithering usando o método de Floyd-Steinberg. Note que, devido ao reduzido número de cores na imagem, existem graves problemas visor.
O MIC é paleta baseada: embora qualquer paleta seleção pode ser um dos milhões de tons, o número máximo que pode ser usada em um frame é 256. Estes são armazenados em uma "paleta", uma tabela que associa cada paleta selecção com um número específico valor RGB. A limitação de 256 cores parecia razoável no momento da criação do MIC, porque poucas pessoas podem suportar os custos de hardware para exibir mais. Simples gráficos, linhas, desenhos, desenhos animados, fotografias e cinzento escala necessidade tipicamente menos de 256 cores. Além disso, uma das cores na paleta opcionalmente pode ser definido como totalmente transparente. Um pixel transparente assume a cor do pixel nas mesmas posições do fundo, que pode ter sido determinada por uma anterior quadro de animação.
Existem maneiras de arrepiar ou difusa fotografias usando pixels de 2 ou mais cores diferentes para aproximar-nos entre uma cor, mas esta transformação inevitavelmente perde algum detalhe. Os algoritmos utilizados para seleccionar a paleta e para executar os dithering variam amplamente na produção de qualidade. Além disso, dithering reduz significativamente a imagem da compressão e, portanto, funciona ao contrário do GIF do objectivo principal.
Nos primeiros dias de browsers gráficos, placas gráficas com 8 bits buffers (permitindo apenas 256 cores) eram comuns e que era bastante comum para fazer imagens GIF usando a paleta websafe. [Citação necessários] Esta exibição assegurada previsível mas severamente limitada a escolha de cores. Agora que o 32-bit placas gráficas, que suportam 24 bits de cor, são a norma, podem ser feitas até paletas de cores para a melhor imagens individuais.
Existem pelo menos dois métodos utilizados raramente, [5] [6], que pode gerar um GIF que, se descodificados de acordo com a norma GIF89a, irá produzir uma animação que termina com um 24-bit RGB TrueColor imagem.
GIF89a foi concebido com base no princípio de renderização de imagens (conhecido como molduras quando usado para animação) para uma lógica, de tamanho fixo tela. Cada imagem poderia eventualmente ter nenhum atraso depois que é prestado, e poderá ter a sua própria paleta de 256 cores. Além disso, cada imagem não necessita de preencher a tela toda lógica, bem como a animação pode cessar após o último frame, que não precisam de começar novamente. O multi-frame, sem demora, e único-paleta características, opcionalmente combinado com transparência, para permitir que cada imagem para substituir apenas uma parte da imagem anterior do pixel dados. Quando utilizado sem looping, uma mais-que-256-color resultado final pode ser alcançado.
Por exemplo, um GIF podem ser codificados para renderizar como uma série de sobreposições de tela cheia imagens, cada imagem enchendo de cor que não estava no anterior. Transparente pixels podem ser utilizados para preservar a cores a partir de imagens anteriores [7].
Um método semelhante que não utiliza a transparência é a codificar o GIF para renderizar como uma série de less-than-full-screen imagens adjacentes uns aos outros, ao invés de sobreposição [8].
Estes métodos não são amplamente apoiadas pelo GIF geradora de software, e navegadores da Web e outras imagens telespectadores não podem conter completamente compatível GIF89a implementações, assim a sua capacidade de exibir tais GIFs precisão pode ser limitada.
Microsoft Windows Vista do programa Paint salva uma pequena imagem preta e branca, como a seguir. Gif. Devido à sobrecarga código, como um grande desnecessariamente cores este quadro. Gif não é eficiente para a imagem com apenas 15 pixels.
A imagem pixel cores, digitalizada horizontalmente a partir do topo à esquerda, são convertidos por LZW codificação de códigos que são mapeados em bytes, em seguida, para o armazenamento do arquivo. Para a amostra da imagem acima reversível mapeamento entre 9 códigos bits e bytes é mostrado abaixo.
Uma ligeira compressão é evidente: pixel cores definidas inicialmente por 15 bytes são exactamente código representado por 12 bytes, incluindo códigos de controlo. A codificação o processo que produz 9-bit códigos é mostrado abaixo. Um local string acumula números pixel cor da paleta, sem saída, enquanto a acção local corda pode ser encontrado em um código tabela. Não existe um tratamento específico dos dois primeiros pixels que antes de chegar à mesa cresce a partir do seu tamanho inicial por adições de cordas. Após cada código de saída, o local string é inicializado com as últimas pixel cor (que não poderiam ser incluídas no código de saída).
Descodificação começa pelo mapeamento dos bytes armazenados de volta a 9 bits códigos. Estes são decodificados para recuperar o pixel cores conforme mostrado abaixo. Uma tabela idêntica à utilizada no codificador é construído adicionando cordas por esta regra:
Comprimentos mais curtos código pode ser usado para paletas menor do que o 256 (máximo) cores no exemplo. O código tabela inicialmente contém códigos que são um pouco mais longo do que o tamanho paleta de forma a dar espaço adicional para dois códigos especiais CLR e final e para cordas que são adicionados durante o processo. Quando o quadro é o código completo comprimento aumenta para dar espaço para mais cordas, até um máximo código 4095 = FFF (hex). Como o descodificador constrói a sua tabela que acompanha estes aumentos de código de comprimento e é capaz de descompactar incoming
A norma permite um codificador para inserir um "CLR" código em qualquer altura, a imagem de dados, o que permite implicitamente. Gif, a ser criado sem compressão LZW. A codificação tabela então nunca precisam crescer para além do "fim" código valor. Ao custo de maior tamanho do arquivo isto dá vantagens de codificação mais simples com uma correspondência de 1:1 pixels e paleta códigos, mantendo a compatibilidade com ordinário. Gif mostra. Tem sido utilizado para evitar infringir patentes abrangendo LZW. Para o exemplo 3X5 imagem acima, as seguintes 9 bits códigos representam "CLR" seguido de pixels na imagem para digitalizar e 'final'.
Depois destes códigos são mapeados para bytes o arquivo compactado não difere do arquivo compactado, assim:
Um animado. Gif compreende uma série de imagens ou quadros a serem exibidos sucessivamente, cada um descrito por sua própria GCE (Graphic Control Extension), precedida por um cabeçalho cujo conteúdo, por padrão se aplica a todos os quadros. Após o cabeçalho de dados é orientada para o fluxo em vez de ser fixado em índices, para a localização do início de uma GCE depende do comprimento da anterior GCE (s). Dentro de um GCE o LZE-coded imagem dados são dispostos em cada um dos blocos de até 255 bytes, o tamanho do bloco é declarada por um byte que a antecede. Abaixo está a estrutura da animação rotativas terra (grande). Gif:
O GCEs permitir que a duração em que cada fotograma é exibido para ser especificado em centésimas de segundo. Alguns dados da economia é possível, quando um quadro só precisa de reescrever uma parcela dos pixels da tela, porque a imagem Descriptor pode definir um pequeno rectângulo de ser examinados novamente em vez de toda a imagem. Mostra que não suportam animados. Gifs mostrar apenas o primeiro frame.
Em 1977 e 1978, Jacob Ziv e Abraham Lempel publicado um par de artigos sobre uma nova classe de algoritmos de compressão sem perda de dados, agora coletivamente referidos como "LZ77" e "LZ78". Em 1983, Terry Welch desenvolveu uma variante do LZ78 rápido que foi chamado LZW. [9] [10]
Welch apresentado um pedido de patente para o método LZW, em Junho de 1983. As patentes resultantes, E.U. patente 4558302, concedida em Dezembro de 1985, foi atribuído ao Sperry Corporation, que posteriormente se fundiu com Burroughs Corporation em 1986 e formou Unisys [9]. Outras patentes foram obtidos no Reino Unido, França, Alemanha, Itália, Japão e Canadá.
Em Junho de 1984, um artigo de Welch foi publicada na revista IEEE, que publicamente o LZW técnica descrita pela primeira vez [11]. LZW tornou popular uma técnica de compressão de dados e, quando a patente foi concedida, Unisys entrou em acordos de licenciamento com mais de uma centena de empresas. [9] [12]
A popularidade do LZW CompuServe levou a escolhê-lo como a sua técnica de compressão formato GIF, desenvolvido em 1987. Na época, CompuServe não tinha conhecimento da patente [9]. Unisys tornou consciente de que o formato GIF compressão LZW utilizada a técnica de licenciamento, e entrou em negociações com a CompuServe, em Janeiro de 1993. O acordo foi anunciado em subsequentes 24 de dezembro de 1994 [10]. Unisys declarou que espera que todos os principais comerciais de informação em linha de serviços a empresas que empregam LZW patente de licenciar a tecnologia da Unisys, a uma taxa razoável, mas que não necessitam de licenciamento , ou taxas a serem pagas, para os não-comercial, sem fins lucrativos baseada em GIF aplicações, incluindo aquelas para uso sobre a serviços on-line [12].
Na sequência deste anúncio, houve ampla condenação do CompuServe e Unisys, e muitos programadores ameaçou parar de usar o formato GIF. O formato PNG (veja abaixo) foi desenvolvido em 1995 como uma destinados substituição. [9] [10] [11] No entanto, a obtenção de apoio dos fabricantes de navegadores da Web e outros softwares para o formato PNG revelado difícil e não foi possível substituir o formato GIF, PNG, embora tenha aumentado gradualmente na popularidade [9].
Em Agosto de 1999, Unisys alterou os detalhes de suas práticas de licenciamento, anunciando a possibilidade de os proprietários de líquido intra Billboard e Web sites para obter licenças mediante pagamento de uma licença de tempo de uma taxa de $ 5,000 ou US $ 7.500. [13] Essas licenças não eram necessárias dos proprietários de sites que GIF ou outros usuários que tinham utilizado software licenciado para gerar GIFs. No entanto, Unisys foi o tema de milhares de ataques on-line e e-mails de usuários abusivos acreditando que eles estavam indo a ser cobrado $ 5.000 ou processado por usar GIFs em seus sites. [14] Apesar de dar licenças livres de centenas de organizações sem fins lucrativos, escolas e governos, Unisys foi totalmente incapaz de gerar qualquer boa publicidade e continuou a ser vilified por indivíduos e organizações como a Liga para a Liberdade de programação, que começou a "Burn All GIFs" campanha [15].
Os E.U. LZW patente expirou em 20 de junho de 2003. [16] A contrapartida patentes no Reino Unido, França, Alemanha e Itália terminou em 18 de junho de 2004, os japoneses homólogo patentes expirou em 20 de junho de 2004 e ao homólogo canadiano patente expirou 7 de Julho de 2004. [16] Assim, enquanto a Unisys tem mais patentes e os pedidos de patentes relativas a melhorias do LZW técnica, [16], o formato GIF pode agora ser utilizado livremente.
Portable Network Graphics (PNG) foi concebido como um substituto para o formato GIF, a fim de evitar a violação da Unisys' patente sobre a compressão LZW técnica [9]. PNG oferece melhor compressão e mais recursos do que GIF. [Citação necessários] O formato é mais adequado do que nos casos em que o MIC-cor verdadeira imagem e alfa transparência são obrigatórios. MNG foi originalmente desenvolvida como uma solução baseada PNG para animações, mas não tem sido amplamente adotada. O formato GIF é ainda preferida para animação durante PNG, embora verdade Animated Portable Network Graphics estão em desenvolvimento e são suportados pela Mozilla no Firefox 3. [17] [18]
Embora não teve tempo para o formato PNG para ser apoiado, apoiar os novos navegadores formato PNG e GIF imagens geralmente pode ser substituído por imagens PNG se desejado. No entanto, o Internet Explorer 6 e versões anteriores não suportam PNG's canal alfa transparência sem recurso usando o Microsoft HTML específicos de extensões. [19] Usando tags HTML padrão para imagens PNG no Internet Explorer pode gerar um olhar diferente do que pretendia. Internet Explorer 7 suporta canal alfa transparência sem precisar extensões. Não versões do Internet Explorer, no entanto, apoiar a gama característica de imagens PNG, ea exposição destas imagens pode ser do mal matiz [20].
PNG ficheiros são geralmente menores que GIF ficheiros da mesma qualidade de imagem, devido à compressão mais eficientes técnicas utilizadas na codificação PNG. [Citação necessários] arquivos PNG podem efectivamente ser muito maior do que arquivos GIF em situações em que um e um GIF PNG foram criadas a partir de uma imagem de alta qualidade mestre, como PNG é capaz de armazenar mais cor e transparência informação do GIF. No entanto, para idêntico 8-bits (ou inferior) imagem dados, PNG em formato de arquivos de imagem estão quase sempre menor do que o equivalente GIF. Desinformação sobre PNG eficiência geralmente podem ser rastreada até pobre PNG apoio em versões mais antigas de alguns programas da manipulação da imagem (por exemplo, Adobe Photoshop não otimizar PNGs reduzida para paletas de cores por omissão). [Citação necessários] A solução é trabalhar pngcrush. Geralmente pode-se notar também que um bom apoio (animated) GIF é difícil: lona complicado, redundante cor entradas de dicionário resets. [Esclarecimentos necessários] Observe também a complicada interação entre cor quantização, compressão (especialmente em animações) e dithering notar em referência com a antiga é obsoleto com PNG. [esclarecimentos necessários]
Em 2004, uma proposta de extensão ao formato PNG chamados APNG foi sugerida. Foi para proporcionar a capacidade de animar arquivos PNG, mantendo a compatibilidade para trás em descodificadores que não pode compreender a animação chunk. Older descodificadores simplesmente tornar o primeiro quadro da animação. MNG, uma variante do PNG que suporta animação, chegou a versão 1.0 em 2001, mas poucas aplicações apoiá-lo. Animated GIF permanece amplamente utilizado como muitos aplicativos são capazes de criar os arquivos, e ele continua a ser a única imagem animada formato capaz de ser prestados em quase todos os navegadores modernos, sem a utilização de um plug-in [21]. No entanto, objetos flash embutido , mpegs e outros formatos de vídeo são usados em lugar de GIFs animados em muitos sites. Outras abordagens, como as molduras individuais servidos por AJAX, SVG ou as imagens podem ser animadas através de JavaScript.
1. ^ "Folha de Capa para o GIF89a Specification". W3C. 31 de julho de 1990. http://www.w3.org/Graphics/GIF/spec-gif89a.txt. Retirado em 6 de Março de 2009.
2. ^ Olsen, Steve. "O MIC Pronunciação Page". http://www.olsenhome.com/gif/. Retirado em 6 de Março de 2009. "CompuServe usado para distribuir um programa chamado CompuShow exibição gráfica. A documentação para versão 8,33 na seção de FAQ, afirma: O GIF (Graphics Interchange Format), pronunciado" JIF ", foi concebido pelo CompuServe e da especificação oficial divulgado em junho de 1987. "
8. ^ Este método é explicado em detalhe por Andreas Kleinert na sua GIF 24 Bit (TrueColor) extensões documento, e está demonstrada em Philip Howard's True Color-GIF Exemplo página Web, que utiliza o seu angif C biblioteca. A demonstração utiliza blocos de tamanho 16 por 16 pixels, permitindo até 256 cores únicas, 1 por pixel, o máximo de cada bloco da paleta pode apoiar.
12. ^ Ab Unisys Esclarece Política Quanto Patente Uso em On-Line Service Offerings - arquivados pela Liga para a Liberdade de programação
* Substituir um dicionário com uma raiz quadrada - sugestões para comprimir GIFs sem utilizar compressão LZW