Fiche technique | |
---|---|
Type | Bitmap |
Nombre de couleurs | 1 à 24 bits |
Auteur | Sun Microsystems |
Introduction
L'extension de fichier «.RAS» ou «.RF» permet d'indiquer un format d'image «Sun Raster» proposé par l'entreprise Sun Microsystems pour ses ordinateurs SPARC avec son système d'exploitation Solaris. Les fichiers au format «Sun Raster» utilisent généralement l'extension de fichier .RF ou .RAS mais il n'y a pas de tradition établie pour de tels fichiers sous les système d'exploitation DOS ou Windows, donc il n'est pas certains qu'une autre nom d'extension de fichiers ne soit employé.
Structure du fichier
Le format Sun Raster File est un format simple prenant en charge les images à base de couleurs et RVB de 1, 8 ou 24 bits par pixel. Le Bitmap peut être éventuellement compressé à l'aide d'un schéma de codage RLE simple. La structure globale d'un fichier se compose d'un entête de 32 octets, d'une cartographie de couleurs facultative et du Bitmap lui-même. L'entête est composé de 8 champs entiers. Gardez à l'esprit qu'un SPARC possède un processeur 32 bits, donc le type de données int du langage de programmation C est de 32 bits, ou un type de données long selon les normes du système d'exploitation DOS. Lorsqu'elle est présente, une cartographie de couleurs se compose de valeurs RVB ou de valeurs brutes. L'interprétation des valeurs brutes est quelque peu ambiguë. Un champ d'un entête de fichier Sun Raster est un champ de type d'image décrivant la composition du Bitmap du fichier. Il s'agit généralement d'un tableau de valeurs de pixels non compressé ou codé en RLE. Le nombre de bits dans une ligne de balayage d'image est la largeur de l'imageur en pixels multipliée par la profondeur de l'image en bits par pixel. Cette valeur est toujours arrondie à un multiple de 16 pour déterminer la longueur entreposée réelle d'une ligne de balayage. Ainsi, une ligne de balayage contiendra toujours un nombre entier de mots et peut être complétée à sa fin par des bits inutilisés.
Structure d'entête du fichier
Il est a a noter que l'entête d'un Sun Raster File se compose de 8 entiers de 32 bits. Une caractéristique supplémentaire et très importante de l'entête est que les valeurs utilisent l'ordre des octets des microprocesseurs 68000 des Motorola. Si le fichier est lu sur un système avec un microprocesseur Intel, l'ordre des octets de chaque valeur doit être inversé avant de pouvoir être utilisé. Voici une description de chaque champ de l'entête du fichier :
Déplacement | Taille | Description | |
---|---|---|---|
0 | 4 octets | Ce champ contient la signature d'un fichier de format «Sun Raster File». La valeur est toujours 59A66A95h. | |
4 | 4 octets | Ce champ permet d'indiquer la largeur de l'image en pixels. | |
8 | 4 octets | Ce champ permet d'indiquer la hauteur de l'image en pixels. | |
12 | 4 octets | Ce champ permet d'indiquer le nombre de bits par pixel. | |
16 | 4 octets | Ce champ permet d'indiquer la taille du Bitmap entreposé en octets. Une version plus ancienne du format, identifiable par un type d'image 0 (imOld), définit le champ à zéro. Pour ce type d'image, la taille peut être calculée à partir des champs de largeur, de hauteur et de profondeur. Pour tous les autres types, le champ doit contenir la vraie longueur, étant équivalente à la taille du fichier moins la taille de l'entête et la taille de la palette de couleurs. | |
20 | 4 octets | Ce champ permet d'indiquer l'identificateur de type d'image : | |
Valeur | Description | ||
00000000h | Cette valeur permet d'indiquer que l'image n'est pas compressé. | ||
00000001h | Cette valeur permet d'indiquer que l'image est identique à 0. | ||
00000002h | Cette valeur permet d'indiquer une image utilisant un encodage RLE. | ||
00000003h | Cette valeur permet d'indiquer une image RVB (RGB en anglais). | ||
00000004h | Cette valeur permet d'indiquer une image avec une compatibilité avec le format TIFF. | ||
00000005h | Cette valeur permet d'indiquer une image avec une compatibilité avec le format TAAC. | ||
0000FFFFh | Cette valeur permet d'indiquer une image avec une format expérimental. | ||
24 | 4 octets | Ce champ permet d'indiquer le type de cartographie de couleur présent : | |
Valeur | Description | ||
00000000h | Cette valeur permet d'indiquer qu'il n'y a pas de couleur de présente. | ||
00000001h | Cette valeur permet d'indiquer qu'il une cartographie de couleur RVB (RGB en anglais). | ||
00000002h | Cette valeur permet d'indiquer qu'il y a un type de cartographie non-standard. | ||
28 | 4 octets | Ce champ permet d'indiquer une taille de cartographie de couleur en octets. S'il n'y a pas de cartographie de couleur, alors la valeur est 0. Pour une cartographie de couleur RVB, cette valeur est 3 fois le nombre de couleurs dans la palette. |
Structure du Bitmap du fichier
Le Bitmap d'un fichier Sun Raster File peut être non compressé ou encodé en RLE, et il peut être composé de pixels de 1, 8 ou 24 bits. Les pixels de 1 et 8 bits indiquent une image cartographiée en couleur; Les pixels 24 bits indiquent une image basée sur le RVB. Le schéma de codage du RLE utilisé par le format Sun Raster File est relativement simple. Un Bitmap codé se compose d'une série de paquets de longueurs variables. Il existe trois types de paquets, 1, 2 et 3 octets de longueur. Les paquets sont plus facilement décrits en représentant l'algorithme de décodage en pseudocode :
- Lire un octet.
- Si l'octet n'est pas égal à 0x80 (128), alors il représente un octet de pixel unique. Sortir un octet de cette valeur et continuer.
- Si l'octet est égal à 0x80, lisez un deuxième octet. Si le deuxième octet a la valeur zéro, le premier octet représente un octet pixel de valeur 0x80. Sortir un octet de cette valeur et continuer.
- Si le deuxième octet est différent de zéro, il s'agit d'un champ de comptage. Lire un troisième octet, étant un octet de pixels. Compter la sortie + 1 octet de cette valeur et continuer.
Il est important de noter que l'algorithme code les octets, pas les pixels. Dans un Bitmap en 1 bpp, chaque octet codé représente 8 pixels. Dans un Bitmap de 8 bpp, chaque octet est un pixel. Dans un Bitmap de 24 bpp, un pixel est composé de 3 octets. N'oubliez pas non plus que la longueur de la ligne de balayage non codée est un nombre pair d'octets et peut donc contenir des bits inutilisés à sa fin.
Voir également
Langage de programmation - Traitement d'image - Accueil