O formato PNG (Portable Network Graphics, ou formato Ping) é um formato de ficheiro gráfico bitmap. Foi criado em 1995 para fornecer uma alternativa livre ao formato GIF, formato proprietário cujos direitos são detidos pela empresa Unisys (proprietária do algoritmo de compressão LZW), o que obriga cada editor de software que manipula este tipo de formato pagar-lhe direitos. Assim, o PNG é igualmente um acrónimo recorrente para PNG' s Not Gif.
O formato PNG permite armazenar imagens a preto e branco (até 16 bits por pixéis de profundidade de codificação), em cores reais (True color, até 48 bits por pixéis de profundidade de codificação), bem como imagens indexadas, fazendo uso de uma paleta de 256 cores.
Além disso, suporta a transparência por camada alfa, ou seja, a possibilidade de definir 256 níveis de transparência, enquanto o formato GIF permite definir apenas uma só cor da paleta como transparente. Possui igualmente uma função de entrelaçamento que permite afixar a imagem progressivamente.
A compressão proposta por este formato é uma compressão sem perda (lossless compression) 5 a 25% melhor so que a compressão GIF.
Por último, o PNG integra informações sobre a gama da imagem, o que torna possível a correcção gama e permite uma independência no que diz respeito aos periféricos de afixação. Mecanismos de correcção de erros estão igualmente integrados no ficheiro, para garantir a sua integridade.
Um ficheiro PNG é constituído por uma assinatura, permitindo assinalar que se trata de um ficheiro PNG, seguidamente de uma série de elementos chamados chunks (o termo “segmentos” será utilizado seguidamente). A assinatura de um ficheiro PNG (em notação decimal) é a seguinte:
137 80 78 71 13 10 26 10
89 50 4E 47 0D 0A 1A 0A
Cada segmento (chunk) é composto por 4 partes:
Os segmentos podem estar presentes em qualquer ordem, mas devem começar pelo segmento de rubrica (IHDR chunk) e terminar pelo segmento de fim (IEND chunk)
Os principais segmentos (chamdos critical chunks) são:
Os outros segmentos (chamados anciliary chunks) são os seguintes: