JPEG Network Graphics
# JPEG Network Graphics

Le format JPEG Network Graphics (abréviation : JNG) est un format d'images numériques ouvert, basé sur le format PNG, et utilisant la compression JPEG.

JNG a été conçu comme un élément du format d'images animées MNG, mais il peut être utilisé comme un format à part entière. Comme le format PNG le format JNG peut comporter une couche de transparence (couche alpha). Contrairement au PNG qui utilise une compression sans perte, le JNG utilise la compression JPEG avec perte.

Les fichiers JNG embarquent des données JPEG de 8 ou 12 bits pour stocker les couleurs, et peuvent contenir d'autres types de données (PNG 1, 2, 4, 8, 16 bits, ou image JPEG 8 bits en niveaux de gris) pour les informations de transparence. Actuellement un fichier JNG peut contenir deux espaces séparés de données JPEG pour les informations de couleur (un de 8 bits et un de 12 bits) pour permettre aux décodeurs qui ne peuvent pas (ou ne souhaitent pas) gérer les données codées sur 12 bits, d'afficher les données sur 8 bits si elles sont présentes.

La spécification du format JNG version 1.0 est sortie le 31 janvier 2001 (initialement comme élément de la spécification du format MNG). Normalement, toutes les applications supportant le format de fichier MNG peuvent aussi gérer les fichiers JNG. Par exemple Konqueror supporte nativement les MNG/JNG, et des extensions existent pour Opera, Internet Explorer et Mozilla Firefox. La suite Mozilla supportait auparavant le MNG/JNG, mais le support natif a été supprimé dans Mozilla 1.5a et n'a pas été réintégré depuis malgré les demandes des utilisateurs. Safari ne gère pas le MNG/JNG.

JNG améliore les possibilités du format JFIF (format de fichier usuel pour JPEG), en ajoutant les possibilités de transparence, de deux flux alternatifs de couleurs (l'un 8 bits et l'autre other 12 bits), ainsi que diverses autres capacités utilitaires du PNG, tel la correction colorimétrique, la correction gamma, les profils de couleurs embarqués, des métadonnées de style PNG (~), des codes de contrôle, etc. L'information sur la transparence au sein d'un fichier JNG (sous forme d'un canal alpha) peut être sauvée soit au format PNG sans perte, soit au format JPEG avec perte. Ainsi, les utilisateurs bénéficient de la puissance de la compression JPEG tout en ayant le choix de préserver l'information sur la transparence (compression PNG sans perte).

La structure des fichiers JNG, à base de sous-éléments, est essentiellement la même que celle des fichiers PNG, à la légère différence de la signature et l'utilisation de sous-éléments différents.

Signatures des formats « Network Graphics » :

| Nom | Signature | Signature |
| - | - | - |
| Nom | Codes caractères, en hexadécimal | Caractères ASCII & codes de contrôle C0 et C1 |
| PNG | 89 50 4E 47 0D 0A 1A 0A | <HTJ> 'P' 'N' 'G' <CR> <LF> <SUB> <LF> |
| MNG | 8A 4D 4E 47 0D 0A 1A 0A | <VTS> 'M' 'N' 'G' <CR> <LF> <SUB> <LF> |
| JNG | 8B 4A 4E 47 0D 0A 1A 0A | <PLD> 'J' 'N' 'G' <CR> <LF> <SUB> <LF> |

Notes :

* Les caractères sont tous codés sur un octet, soit deux quartets hexadécimaux ; ils appartiennent à la plage des caractères ASCII (compris entre 0 et 127 – en décimal –, soient les caractères imprimables et les caractères de contrôle du bloc C0) ou à la plage des caractères du bloc C1 ;
* Les caractères 'P', 'N', 'G', 'M', 'J', sont des caractères imprimables (du code ASCII, et donc du bloc Unicode/U0000) ;
* Les caractères <CR>, <LF>, <SUB> sont des codes du bloc C0 (du code ASCII, et donc du bloc Unicode/U0000) ;
* Les caractères <HTJ>, <VTS>, <PLD> sont des codes du bloc C1 (du bloc Unicode/U0080).

Les signatures, sur huit caractères, de ces types de fichier ont été conçues pour s'assurer de la reconnaissance du type de fichier bien sûr, mais aussi pour détecter les particularités de la plateforme hôte d'un tel fichier :

Intentions liées aux signatures, pour les formats « Network Graphics » :

| Valeurs (hex) | Intentions |
| - | - |
| 8• | Cet octet a le bit de poids fort à 1. Cela permet de détecter les systèmes de transmission ne supportant pas les données 8 bits. Cela réduit également la possibilité de prendre un fichier texte pour un fichier PNG/MNG/JNG, ou vice versa. ('••' représente le quartet '9', 'a' ou 'b', selon le type de fichier PNG/MNG/JNG). |
| •• 4E 47 | La suite des trois caractères ASCII « PNG », « MNG » ou « JNG », qui permettent à un humain d'identifier aisément le format du fichier visualisé dans un éditeur de texte. (•• représente les paires de quartets 50, ou 4d ou 4a (soit les caractères 'P', 'M' ou 'J'), pour indiquer, respectivement, le type de fichier PNG, MNG, ou JNG). |
| 0D 0A | Une séquence fin de ligne (<CR><LF>), selon la convention DOS/Windows. |
| 1A | Le caractère CTRL+Z (l'octet <SUB>) qui indique, sous DOS/Windows, une fin de fichier (<EOF>). Ainsi, sous DOS, en affichant le contenu du fichier avec la commande TYPE, l'affichage s'arrête dès ce caractère. |
| 0A | Une fin de ligne (<LF>), selon la convention Unix. |

Les différents codages de fin de ligne permettent de reconnaitre le système d'exploitation. La signature sur huit caractères permet également de déterminer le boutisme (endianess) du système, par lecture des mêmes données, pour des accès 8, 32 ou 64 bits.

JNG n'a pas de type MIME enregistré, mais le type image/x-jng, non-officiel, est utilisé.

