Prendre du poids
Sauter Menu de l'activité |
Calculer le poids d'une image matricielleLorsque vous désirez envoyer une photo à un(e) ami(e) en utilisant votre courriel, il est bon d'en estimer le poids car certains serveurs de courriel refusent d'envoyer les messages auxquels sont attachées des images trop lourdes. ![]() Ce poids (qui correspond à la taille du fichier) est affiché dans la boîte de dialogue de fichiers. Mais au-delà de ça, quelles mesures pourrons-nous prendre pour lui donner un poids raisonnable si ça n'est pas le cas ? Pour cela, nous avons besoin de comprendre un peu mieux comment les images sont réellement codées. Les vraies couleurs![]() Le principe d'éclairage des pixels d'un écran d'ordinateur est basé sur une technique appelée RVB (RGB en anglais) qui « mélange » avec des intensités différentes, les trois couleurs de base que sont le rouge, le vert et le bleu. Pour rappel, chacune de ces composantes est codée sur un octet (256 niveaux d'intensité). On parle d'images en vraies couleurs (true colors en anglais). Ce que montre l'illustration ci-contre, ce sont les trois sous-pixels dont l'extrême proximité donne à notre œil cette impression d'un seul pixel coloré. Les formats d'imagesIl existe de nombreux formats d'images. Simplement dit, le format, c'est la manière dont l'image est codée. Quelles informations trouve-t-on dans la suite de nombres binaires qui représente une image, et dans quel ordre ? Reprenons l'exemple simple du chapitre 1. 00000111000001110010000001000000101001110111001010000100000010000100011000101001 Le format aurait été :
N'importe qui peut reproduire une image sur base d'une telle suite de nombres et des indications de format. Bien entendu, les vrais formats d'images sont un peu plus compliqués. Nous allons dire quelques mots du plus connu d'entre eux, le format BMP, et fournir des indications sur l'utilité des autres. Le format BMPExaminons maintenant comment les choses se passent réellement pour les systèmes informatiques et décrivons d'abord le plus important format d'image qui existe, car c'est aussi celui qui sert aux systèmes pour reconstituer les images, tant sur un écran, que sur une feuille de papier. Le format BMP est un format ouvert de codage des images. Ouvert signifie que la manière dont l'image est codée est universellement connue et que tout programme qui le souhaite est à même de décoder une image codée suivant ce format. Comment qualifie-t-on les formats qui ne sont pas ouverts et pourquoi ? Ces formats sont qualifiés de « formats propriétaires ». Cela signifie qu'ils ne peuvent être décodés que par les programmes qui les ont codés. ![]() Le caractère ouvert ou fermé des formats ne concerne pas que les images, mais aussi les textes, les sons et toutes les informations qui peuvent être codées. De nombreux utilisateurs et développeurs de logiciels défendent l'idée séduisante de ne travailler qu'avec des formats ouverts et des logiciels libres. Le format BMP se structure au minimum de la manière suivante :
L'entête du fichier compte invariablement 14 octets et celle de l'image, 40 octets. Êtes-vous fort(e) en calcul mental ? Quel sera le poids exact d'une image matricielle en vraies couleurs de 2.000 pixels de large sur 1.500 de haut ? ![]() Pour obtenir le poids du corps de l'image, il faut multiplier la largeur (en nombre de pixels) par la hauteur (en nombre de pixels) et par la profondeur (en nombre d'octets). Résultat: (2.000 x 1.500 x 3) = 9.000.000 octets soit 9 Mo. Pour le poids total, il faut ajouter le nombre d'octets des entêtes. Résultat: (2.000 x 1.500 x 3) + 54 = 9.000.054 octets soit approximativement 9 Mo. Par conséquent, dans le format BMP, le calcul du poids (total) d'une image en vraies couleurs est facile : (largeur (nbre de pixels) x hauteur (nbre de pixels) x profondeur (nbre d'octets par pixel)) + 54 (octets) ou encore (largeur (nbre de pixels) x hauteur (nbre de pixels) x 3 (octets par pixel)) + 54 (octets) Palette de couleurs![]() Quand on se rend compte du poids d'une image au format BMP, on comprend mieux pourquoi, il y a quelques années, on se contentait d'images dont les couleurs étaient codées sur un octet. Une image produite par le plus simple des appareils photo numérique d'aujourd'hui (plusieurs mégapixels) n'aurait pas pu tenir sur une disquette, le support amovible le plus utilisé à ce moment. Cependant, le format BMP permet de coder des images de profondeurs différentes et donc aussi des images en 256 couleurs. Pourquoi continuer à travailler avec 256 couleurs alors qu'on peut disposer de 16 millions de couleurs ? D'abord, certaines images contiennent peu de couleurs. Observez les deux images qui suivent. Les différences sont à peine visibles. Ensuite, beaucoup d'images ont été créées sur ce format dans le passé. Enfin, ce type de codage reste très intéressant pour des photographies en « noir et blanc ». On parlera alors de 256 « niveaux de gris ». Les couleurs de l'image A sont codées sur trois octets, c'est-à-dire 24 bits (16 millions de possibilités), alors que celles de l'image B le sont sur un octet (256 possibilités). ![]() ![]() Pour une image au format BMP dont les couleurs sont codées sur moins de 24 bits, le calcul du poids est un peu plus compliqué. Par exemple, si l'image est codée en 256 couleurs (un octet par pixel) ou encore 16 couleurs (un demi-octet par pixel), le système a besoin de connaître les couleurs qui constitueront ce qu'on appelle la palette de couleurs. Chacune de ces couleurs portera un numéro (de 1 à 256, de 1 à 16… selon le cas), ce qui n'empêche qu'elle doive être décrite en vraies couleurs avant le décodage. Le codage des N couleurs se fait sur quatre octets par couleur (et non trois, le quatrième n'étant pas forcément utile). Quel sera le poids d'une image BMP de 800 pixels de large sur 600 de haut codée en 256 couleurs ? Résultat : (800 x 600 x 1) + (256 x 4) + 54 = 481.078 octets exactement. Le calcul du poids d'une image en N couleurs suit la formule : (largeur (nbre de pixels) x hauteur (nbre de pixels) x profondeur (nbre d'octets)) + (Nx4 (octets)) + 54 (octets) Le format BMP est intéressant car il est sans surprise. Toutefois, comme vous avez pu le constater, il génère des fichiers plutôt volumineux. Nous verrons que les images sur le Web nécessitent des formats qui permettent une compression du poids des images pour leur transport sur le Net. Nous essaierons de comprendre en quoi peut consister cette compression. |