Programmez un Tetris en Java 360 pages PDF pour apprendre à votre rythme. Développez des jeux vidéo en Java. www.jdevmaker.com |
Ce document est sous un contrat Creative Commons.
Ne considérez pas que les informations ci-dessous sont exhaustives. Il s'agit seulement de fixer des points de repère, de manière à n'être pas complètement paumé.
En français on appelle ça aussi un point ! C'est ce qui constitue l'image de votre écran. Même si ça n'en a pas l'air, toute image numérique est constituée de "petits carrés" les uns à côté des autres ; un de ces "carrés" est appelé pixel.
La figure 1 est une image de type Matricielle (Bitmap, non-vectoriel) affichée avec sa taille originale.
Sur la figure 2 j'ai zoomé à 800%, centré sur l'œil. On voit nettement que l'image a subit une énorme perte de qualité. On distingue nettement des "carrés", autrement dit les pixels (agrandi à 800%).
Ces pixels sont les constituant primitif de l'image, les éléments les plus petits. Cet effet d'escalier est appelé le crénelage. (Cela d'ailleurs a donné naissance au pixel art, un art moderne qui recherche consciemment cet effet de crénelage dans une composition graphique).
Un fichier d'image non-vectoriel, à stocké (de manière différente suivant le format d'image dans lequel il a été enregistré) ces pixels. Ou plutôt des informations sur ces pixels. Disons que le fichier dit que le premier pixel c'est du blanc, le second du blanc, le 3eme du blanc, le 4eme du vert, le 5eme du vert, etc...
En réponse a cet effet, les logiciels possèdent une fonction d'anti-crénelage (ou lissage). Pour aborder simplement le principe de cette effet de lissage voyons les 2 images ci-dessous :
La figure 3 est une image que l'on peut qualifier de crénelé
La figure 4 est l'image d'un effet d'anti-crénelage
Des pixels plus ou moins opaques sont rajoutés autour du crénelage afin de l'estomper visuellement. L'anti-crénelage ne semble pas très joli : c'est que j'ai "trafiqué" les images afin de bien montrer l'effet obtenu.
Un fichier d'image vectorielles, à stocké des informations non plus en disant tel pixel ici, telle couleur, tel autre pixel, telle autre couleur, etc... mais disons, par coordonnées, par équations. De sorte qu'il sait où en est mathématiquement l'image ou plutôt le dessin car avec cette méthode plutôt souffler dans un tromblon pour faire tomber la lune, que d'espérer définir une image de type photographique en vectoriel, c'est trop complexe (il existe des logiciels transformant une image bitmap en vectoriel, mais à partir d'une image "simple"). Aussi le vectoriel est-il assez limité, tout au moins par opposition avec le réalisme d'une photographie.
L'avantage majeur du vectoriel sur le non-vectoriel, est que la déformation lors de l'agrandissement n'existe plus, car on recalcule les coordonnées. Ainsi on peut agrandir ou réduire à l'infini sans que l'image en soit altérée.
Reprenons notre tortue mais cette fois ci avec un format vectoriel affichée avec sa taille originale (figure 5).
Agrandissons la (figure 6). On voit nettement que le crénelage est absent.
Donc, le type Bitmap enregistre des informations sur les pixels, alors que le vectoriel enregistre des informations sous forme mathématique. Or pour que ces informations mathématiques existent, il faut les définir. C'est pourquoi on doit créer l'image vectorielle avec un logiciel qui fait du vectoriel (comme Sidipodi ou illustrator), ou créer l'image en Bitmap avec un logiciel qui fait du Bitmap (Comme Gimp ou PhotoShop).
Il y a trois caractéristiques fondamentales, toutes étroitement liées :
Pourquoi est-ce étroitement lié ? Parce que chacune interagit sur l'autre suivant cette équations (règle de 3, si vous vous souvenez de vos cours d'école primaire).
Si la taille en unité de mesure est T, la taille en pixel est Px, et la résolution Dpi, nous avons les équations suivantes :
T = Px / Dpi (si l'unité de mesure est le pouce, soit nbre de pixel / nbre de pixel par pouce = taille en pouce)
ou
Px = T x Dpi
ou
Dpi = Px / T
Cette dernière n'est d'un point de vue pratique pas très utile. Je m'explique. La résolution c'est ce qui permettra à l'œil humain de ne pas distinguer l'effet de crénelage. Plus la résolution est faible, plus oeil percevra cet effet d'escalier. 300 DPI est une bonne résolution pour palier ce problème.
La figure 7 est une image, que j'ai agrandi par interpolation (figure 8) avec Gimp. On voit nettement le flou qui en résulte.
Pour info, sachez que les magazines impriment généralement à 300 DPI, les quotidiens à 160.
Méfiez-vous de certaines annonces publicitaires qui entretiennent volontairement un flou (c'est le cas de le dire) pour vous tromper, telles par exemple, pour les scanners qui possèdent soit disant des résolutions de 4800 DPI en A4. Oui, mais par interpolation. La résolution réelle (optique) n'est pas aussi élevée (par exemple 600 ou 1200 DPI).
Lorsque vous enregistrez votre image dans un fichier, votre fichier fait une certaine taille (aussi appelé poids), exprimé dans votre explorateur en octets (o), en kilo-octets (Ko), ou en en méga-octets (Mo).
Vous serez sans conteste heureux d'apprendre que la plus petite unité d'information est le bit. C'est une contraction de binary digit, un élément d'information binaire (0 ou 1). L'association de plusieurs bits s'appelle un mot. Enfin un mot de 8 bits s'appelle un octet (par exemple 01100101). Pour cet octet composé de 8 bits (0 ou 1 a chaque fois pour chaque bit), nous avons donc 28 possibilités, soit 256 valeurs possible (0 à 255). Donc un octet peu stocker une valeur comprise entre 0 et 255. Si la valeur est supérieure, il faut d'autres octets. La valeur 512 par exemple peut-être stocké sur 2 octets (512/256=2). La valeur 2500 sur 10 octets, etc... Si vous voulez stocker la valeur 512 puis la valeur 2500 dans un même fichier, il vous faudra 2 octets + 10 octets = 12 octets. Plus il y a d'informations a stocker, plus grand est le poids du fichier.
Avec des images, il y a énormément d'informations a stocker. Comme rapidement le nombre d'octets devient important, nous trouvons le préfixe kilo afin de n'avoir pas a manipuler ou appréhender des nombres trop élevés. Ainsi nous pouvons convertir un nombre en octet en kilo-octet. Dans un système décimal un kilo = 1000. 1 kilo de carottes = 1000 grammes de carottes. Mais en informatique nous sommes dans un système binaire, où 1 kilo = 1024, soit 1 kilo-octet = 1024 octets. Comme parfois il y a vraiment beaucoup d'informations à stocker, même les kilo-octet sont élevés. Nous pouvons alors convertir les kilo-octet en méga-octet, où 1 méga-octet = 1024 kilo-octets, soit 1024 x 1024 = 1048576 octets.
Après ces petits détails qui peuvent nous aider à mieux comprendre certaines choses, revenons à notre fichier image. Pourquoi les fichiers n'ont t-ils pas tous le même poids ? Parce qu'ils n'ont pas tous la même quantité d'informations.
Tous ce que nous venons de voir dans ce chapitre influe sur la taille de votre fichier d'enregistrement.
La taille en pixel ou en pouce de votre image et sa résolution influe donc directement sur la taille du fichier d'enregistrement.
Tout cela est rapidement devenu une problématique, encore davantage avec le Web, où le temps de chargement d'une page est d'autant plus lent que le fichier a charger est "lourd". Aussi cela nous mène-t-il à : la compression.
Vous connaissez sans doute plusieurs format tel le Bmp, le Jpg, le Png, le Gif, pour ne parler que des plus connus.
Les fichiers générés dans un type de format porte une extension de type "NomDuFichier.extension".
Pourtant cette extension est arbitraire et ne caractérise pas le format du fichier. Si vous enregistrez un fichier en Bmp par exemple et que vous modifiez son extension pour la renommer en Jpg, cela ne signifie absolument pas que vous avez maintenant un fichier au format Jpg. Bien au contraire le fichier demeure au format Bmp.
Ce qui caractérise le format d'un fichier, c'est son codage. Revenons sur ce que nous avons effleuré précédemment.
Pour du Bitmap, nous avons vu que nous enregistrons les informations de l'image en disant le premier c'est du blanc, le second du blanc, le 3eme du blanc, le 4eme du vert, le 5eme du vert, etc... ou plus exactement : blanc, blanc, blanc, vert, vert, etc... suivant un ordre identique. Cela représente le codage, et c'est cela qui confère à votre fichier son format, car suivant le type de format le codage est différent. Nous pourrions par exemple, plutôt que blanc, blanc, blanc, vert, vert, etc... dire 3 blanc, 2 vert, etc... c'est plus court, donc il y a moins d'information (on parle alors de compression), donc le fichier est moins "lourd". En plus, de ce codage de l'image, tous les formats possèdent ce que l'on appelle un entête (ou plusieurs) aussi appelé header, où sont stockés diverses informations comme une clé propre au format (pour le BMP les 2 premiers octets du fichier commencent par les lettres B et M), les dimensions, un commentaire, etc... cette entête bien sûr varie suivant le format.
Certains types de codage offrent des avantages, mais aussi des inconvénients que d'autres n'ont pas.
Disons d'emblée qu'il n'y a pas de bon et de mauvais format. Chacun possède des avantages, mais aussi des inconvénients, et la panacée reste a inventer !
Les possibilités offertes par les différents formats sont :
Le bon format est celui qui est adapté a l'usage que vous allez faire de votre image.