Portable Network Graphics
PNG (Portable Network Graphics) é un formato gráfico baseado nun algoritmo de compresión sen perda para bitmaps non suxeito a patentes. Este formato foi desenvolvido en boa parte para liquidar as deficiencias do formato GIF e permite almacenar imaxes cunha maior profundidade de cor e outros importantes datos. Soporta unha paleta de cores de 16 bits, varios niveis de transparencia e emprega compresión sen perda mediante o formato ZIP. É un estándar recomendado polo W3C e recoñecido como estándar ISO (ISO/IEC 15948:2003).
Historia e desenvolvemento
[editar | editar a fonte]As motivacións para crear o formato PNG xeráronse en 1995, despois de que Unisys anunciase que faría cumprir a patente de software do algoritmo de compresión de datos LZW utilizado polo GIF (patente dos Estados Unidos 4.558.302 e outras ao redor do globo). Había outros problemas co formato GIF que facían desexable un cambio, por exemplo a súa limitación a paletas de 8 bits de 256 cores como máximo, cando os computadores xa soportaban miles ou millóns de cores.
Orixinalmente PNG era un acrónimo recursivo que significaba PNG non é GIF (PNG's Not GIF).
Aínda que o GIF soporta animación, o PNG desenvolveuse como un formato de imaxe estático e creouse o formato MNG como a súa variante animada.
O PNG gañou maior popularidade en agosto de 1999 cando Unisys puxo fin á súa política de licenzas de patente libres de dereitos para os desenvolvedores de software libre ou non comercial.
Versións
[editar | editar a fonte]- A versión 1.0 de PNG foi lanzada o 1 de xullo de 1996 e despois apareceu como RFC 2083. Rapidamente converteuse nunha recomendación W3C o 1 de outubro de 1996
- Versión 1.1 con algúns pequenos cambios e con 3 novas extensións ou "chunks" foi liberada o 31 de decembro de 1998
- Versión 1.2. Nova extensión. Liberada o 11 de agosto de 1999
- Actualmente PNG é un estándar internacional (ISO/IEC 15948:2003), tamén recomendado pola W3C o 10 de novembro de 2003.
- O estándar a partir de 2004 é (ISO/IEC 15948:/2004)
Detalles técnicos
[editar | editar a fonte]Cabeceira do ficheiro
[editar | editar a fonte]Un arquivo PNG empeza cunha firma de 8 bytes, os valores en hexadecimal son: 89 50 4E 47 0D 0A 1A 0A.
Byte(s) | Propósito |
---|---|
89 | Ten o bit máis alto posto a 1 para detectar sistemas de transmisión que non soportan datos de 8 bits e para reducir o risco de que un ficheiro de texto sexa erroneamente interpretado como PNG. |
50 4E 47 | En ASCII, as letras "PNG" permitindo que unha persoa identifique o formato en caso de velo nun editor de texto. |
0D 0A | Unha nova liña con estilo DOS (CRLF) para detectar as conversións de final de liña entre DOS e UNIX. |
1A | Un byte que detén o despliegue do ficheiro baixo DOS cando se usa o comando TYPE. |
0A | Unha nova liñaa en UNIX (LF) para detectar a conversión de final de liña entre DOS e UNIX. |
Segmentos do ficheiro
[editar | editar a fonte]Logo da cabeceira atopamos unha serie de segmentos dos cales cada un garda certa información acerca da imaxe. Os segmentos se autodeclaran como críticos (critical) ou auxiliares (auxiliary) de modo que un programa que atope un segmento auxiliar e non o entenda pode ignoralo sen perigo. A estrutura baseada en segmentos está deseñada para poder ampliar o formato PNG mantendo a compatibilidade con versións antigas.
Seccións esenciais
[editar | editar a fonte]Un decodificador debe ser capaz de entender estas seccións para ler e renderizar un PNG:
- IHDR: debe ser a primeira sección, contén a cabeceira.
- PLTE: contén a paleta de cores.
- IDAT: contén a imaxe que debe ser dividida en múltiples seccións IDAT.
- IEND: marca o final da imaxe.
Seccións de metadatos
[editar | editar a fonte]Outros atributos que poden ser almacenados nun PNG inclúen valores de corrección gamma, cor de fondo e metadatos. PNG además tamén emprega a corrección de cor que usan os sistemas de administración de cor coma o sRGB.
Transparencia na imaxe
[editar | editar a fonte]PNG ofrece unha gran variedade de opcións de transparencia. Con cor verdadeira ou escala de grises, incluso un só píxel pode ser declarado transparente ou pode engadirse unha canle alfa. Para imaxes que usan paletas pódese engadir unha canle alfa nas entradas da paleta.