Qu’on se rassure, il ne s’agit pas de nouvelles injures du Capitaine Haddock mais bien des différentes strates constituantes d’un bitmap complexe. Après l’article sur la notion de résolution d’un bitmap, je vais aborder ici les différentes données contenues dans ce type de fichier comme la profondeur de couleurs, les couches, les calques les modes de fusion et les formats de fichier. Toujours dans le but d’aider ceux qui voudraient en jouer bien entendu.

Concepts abordés
  1. Les bits et les bytes : éléments constituants d’un pixel
  2. La couleur et les couches (RVB)
  3. La lumière et l’encre : l’additif et le soustractif
  4. Les couches alpha : kesako ?
  5. Les calques : des lots de couches
  6. Les modes de fusion
  7. Petit détour par les formats de fichier

1. Les bits et les bytes : éléments constitutifs d’un pixel

Un ordinateur, c’est un ensemble phénoménal d’interrupteurs : soit le courant passe, soit il ne passe pas. Cela se traduit en langage binaire par des successions de zéros et de uns. 00011100… Ces interrupteurs se nomment des bits et n’ont que deux positions possibles : 0 ou 1.
Pour que ces bits puissent représenter des données plus complexes, on les a regroupés en des successions rythmées de 8, 16, 32 ou même 64 bits.

L’ensemble le plus courant de bits est constitué de 8 interrupteurs et se nomme un byte ou octet. Un byte peut contenir 256 informations différentes car 2 (le nombre de choix possible pour un bit : zéro ou un) exposant 8 (le nombre de bits dans un byte) est égal à 256 possibilités, de zéro à 255.

Un exemple caractéristique d’informations codées en 8 bits est le simple texte codé en ASCII. Ce codage limitant le nombre de caractères différents disponibles à 256 (ce qui n’est pas beaucoup si on prend en compte la ponctuation, les lettres accentuée ou non, capitale ou non, etc). La table des caractères ASCII et ses variantes est disponible ici.

Pour rappel (voir La notion de résolution bitmap), un bitmap peut être en noir et blanc, en valeurs de gris ou en couleurs. Mettons de côté les bitmap en couleurs indexées et les polychromies (images composées d’encres spécifiques) dont nous parlerons peut-être dans un prochain article.
Dans le cas du noir et blanc (il s’agit bien ici de noir ou de blanc, aucune nuance de gris intermédiaire), chaque pixel du bitmap est codé sur un bit : zéro ou un, noir ou blanc.
Pour ce qui est des valeurs de gris ou de la couleur, les pixels du bitmap peuvent être codés en 8, 16 ou 32 bits. Donc, dans le cas d’un bitmap en valeurs de gris codé sur 8 bits par pixel, il sera constitué de 256 nuances de gris différentes par pixel, noir et blanc inclus (28). En 16 bits, il sera constitué de 216 nuances, soit 65.536 nuances différentes par pixel. Et cætera.

Remarque : 256 niveaux de gris par pixel en 8 bits, cela peut sembler bien peu mais combiné à une résolution élevée cela suffit bien souvent si le bitmap ne nécessite pas de retouches colorimétriques. Par contre, il est préférable de travailler en 16 bits s’il est nécessaire de retoucher les niveaux de gris radicalement.

2. La couleur et les couches (RVB)

Dans un bitmap, tout est affaire de combinaisons de couches.

Pour obtenir un bitmap en couleurs RVB (le format de fichier classique d’un appareil photo numérique par exemple), le bitmap combine trois couches de couleur : Rouge, Vert et Bleu ; d’où l’acronyme RVB (RGB en anglais).
Chacune des couches est traitée de la même manière qu’un bitmap en valeurs de gris, mais sous la forme de nuances de rouge, de vert ou de bleu selon la couche. Pour le dire autrement, une couche contient toutes les nuances de rouge, une autre les verts et une troisième les bleus. Les trois couches se combinent dans un espace additif (voir plus bas le paragraphe sur la lumière et l’encre).
Un fichier RVB codé en 8 bits par couche (parfois appelé 24 bits : 3 couches x 8 bits) contiendra 256 nuances par couche et 3 couches pour un total de 16.777.216 couleurs possibles par pixel (256 nuances exposant 3 couches). Avec un bitmap RVB codé en 16 bits, on arrive alors au chiffre vertigineux de 281.474.976.710.656 couleurs possibles par pixel (65.536 nuances exposant 3 couches). Et ainsi de suite…

On/Off

Bits

Niveaux

Couches

Couleurs disponibles par pixel

RVB

2

8

256

3

16.777.216

RVB

2

16

65.536

3

281.474.976.710.656

RVB

2

32

4.294.967.296

3

79.228.162.514.264.300.000.000.000.000

Pourquoi des combinaisons de couches ?

Tout simplement parce que cela correspond au fonctionnement d’un écran quel qu’il soit. Les luminophores d’un écran d’ordinateur ou d’une télévision sont composés de trois points lumineux eux-mêmes rouge, vert et bleu. Pour faire simple, ces trois couleurs correspondent aux trois fréquences lumineuses principales du spectre de lumière visible : le rouge proche des infrarouges, le vert grosso modo au milieu et le bleu proche des ultraviolets. Ce sont les trois couleurs primaires du mode additif (voir plus bas) qui, combinées, croisées, donnent de la lumière blanche, l’absence de lumière donnant le noir (le noir n’étant pas une couleur mais, tout simplement, l’absence de lumière visible à l’œil humain).
Pour plus d’information sur le sujet, vous pouvez vous plonger dans le monde merveilleux et très vaste de l’optique et du visible : http://fr.wikipedia.org/wiki/Visible

Les couches rouge, vert et bleu s'additionnent pour donner une image en couleurs.

Les couches rouge, vert et bleu s’additionnent pour donner une image en couleurs.

Rien que des couches RVB ?

Le mode RVB n’est pas le seul disponible dans un fichier bitmap. On peut avoir des bitmaps contenant des couches supplémentaires ou des couches combinées autrement. Par exemple, des couches CMJN (les encres cyan, magenta, jaune, noir) appartenant à l’espace soustractif expliqué plus bas, ou les couches d’une polychromie : une image constituée d’encres spécifiques d’imprimerie (les tons directs), des couches CMJN + tons directs ou une simple couche en valeurs de gris, etc.

Quel que soit le mode dans lequel on se trouve (RVB, CMJN, gris, etc), les couches conservent exactement la même structure (pixels en niveaux de gris codés en 8, 16 ou 32 bits pour le RVB et le gris et 8 ou 16 bits pour le CMJN) mais c’est leur interaction, leur relation, leur espace colorimétrique qui change. C’est pourquoi il ne sera pas possible d’ajouter une couche de type RVB, rouge par exemple, à un bitmap en mode CMJN. Par contre, il sera tout à fait possible d’ajouter à ce même fichier CMJN une encre en ton direct de teinte rouge (un Pantone par exemple).

Pourquoi une encre en ton direct et pas un rouge RVB ? Simplement parce que l’encre fait partie du mode soustractif alors que la lumière rouge fait partie du mode additif. On peut donc en conclure que dans un bitmap en couleur il y a fondamentalement deux grands modes colorimétriques : l’additif et le soustractif.

3. La lumière et l’encre : l’additif et le soustractif

Dans le monde qui nous entoure aussi il y a deux grands modes colorimétriques. Ces deux modes sont tous les deux liés à la lumière. Lorsque nous regardons une image imprimée, s’il n’y a pas de lumière environnante, nous ne voyons pas cette image : “il fait tout noir”. Lorsque nous regardons une télévision, l’écran est tout noir si les luminophores ne produisent pas de lumière. C’est donc la lumière qui est le dénominateur commun.

Lorsque nous regardons la télévision, que nous allons au cinéma ou que nous assistons à un spectacle de son et lumières, nous voyons des couleurs produites par projection de lumière colorée. Que ce soit de la lumière projetée vers notre œil dans le cas de la télévision ou de la lumière réfléchie par un écran blanc dans le cas du cinéma, c’est toujours de lumière qu’il s’agit.
Dans ce mode, les faisceaux lumineux s’additionnent pour produire du blanc : lorsqu’on croise trois faisceaux lumineux rouge, vert et bleu, l’intersection des trois couleurs donne du blanc. Nous sommes dans un espace additif.

Lorsque nous regardons une image imprimée, une peinture, un objet coloré, c’est toujours de la lumière qui excite le fond de notre œil à la différence que la sensation colorée a été obtenue par soustraction : la lumière blanche est réfléchie par le support (la feuille de papier blanc, la toile blanchie au gesso, la matière de l’objet…) après avoir été filtrée par l’encre, les pigments de peinture, etc. Donc, de la « lumière blanche » environnante (lumière du soleil, lampe, etc), l’encre et les pigments colorés ont soustrait des fréquences des ondes lumineuses pour ne réfléchir qu’une partie du spectre de la lumière environnante : la couleur perçue par l’œil. Nous sommes ici dans un espace soustractif.
Si on imprime sur une feuille blanche les trois couleurs principales (dites primaires, CMJ) de l’espace soustractif, à savoir le cyan, le magenta et le jaune, on obtient au croisement des trois couleurs un brun sale, presque noir. C’est donc bien l’inverse du mode additif, ici le croisement/mélange des encres donne une couleur proche du noir.
Pourquoi pas du noir ? Tout simplement parce que les pigments ne sont pas parfaits du point de vue chimique. C’est la raison pour laquelle on y a ajouté une encre noire pour renforcer les contrastes : cyan, magenta, jaune et noir (CMJN, CMYK en anglais). C’est un simple truc technique, une compensation. Si on avait des pigments et un papier parfaits d’un point de vue colorimétrique, il ne serait en théorie pas nécessaire d’adjoindre le noir.

Les encres des couches CMJN se superposent comme des encres transparentes.

Les encres des couches CMJN se superposent comme des encres transparentes.

Hormis la spécificité du noir dans le mode soustractif pour des raisons pratiques, la relation entre les trois couleurs primaires des modes soustractif et additif est très étroite. En réalité, les couleurs cyan, magenta et jaune sont chacune le résultat du croisement de deux couleurs additives :

  • L’addition des Rouge et Vert donne le Jaune
  • L’addition des Rouge et Bleu donne le Magenta
  • L’addition des Bleu et Vert donne le Cyan

Et inversement, le mélange des primaires du soustractif donne une primaire de l’additif :

  • La soustraction des Jaune et Magenta donne du Rouge (au sens additif du terme, soit un orange vif)
  • La soustraction des Jaune et Cyan donne du Vert
  • La soustraction des Cyan et Magenta donne du Bleu (au sens additif du terme, soit un violet foncé)

On peut voir dans la roue chromatique ci-dessous que chaque couleur primaire d’un mode est l’intermédiaire entre deux couleurs primaires du mode opposé : le rouge entre le jaune et le magenta, le cyan entre le bleu et le vert, etc. Le tout formant un cercle continu et englobant la quasi-totalité du spectre visible puisque entre ces 6 couleurs primaires des deux modes peuvent se retrouver toutes les teintes franches intermédiaires.

Cette roue chromatique englobe les couleurs primaires des modes additif (Rouge, Vert, Bleu) et soustractif (Cyan, Magenta, Jaune).

Cette roue chromatique englobe les couleurs primaires des modes additif (Rouge, Vert, Bleu) et soustractif (Cyan, Magenta, Jaune).

Pour que cette roue chromatique soit complète, il faudrait lui adjoindre deux autres paramètres : la luminosité et la saturation. Cela nous donnerait alors le mode TSL complet de représentation d’une couleur (HSB en anglais : hue-saturation-brillance) : Teinte (la position dans la roue chromatique ci-dessus, toutes les teintes intermédiaires comprises en dégradés : rouge, vert, cyan, jaune, etc), Saturation (toutes les intensités allant de la couleur franche au gris), Luminosité (toutes les luminosités allant du très sombre : le noir ; au très clair : le blanc ; avec toutes les nuances colorées intermédiaires).
Voici ci-dessous une représentation (toute personnelle) de ce mode TSL. Il existe d’autres façons de quantifier la couleur comme le mode Lab. Le mode TSL est un des plus anciens et des plus courants.

Une représentation libre de la définition d'une couleur en TSL (Teinte, Saturation, Luminosité).

Une représentation libre de la définition d’une couleur en TSL (Teinte, Saturation, Luminosité).

4. Les couches alpha : kesako ?

Je persiste et signe : dans un bitmap, tout est affaire de couches. Et, paradoxalement, pour gérer la transparence d’une image bitmap (l’incrustation d’un personnage sur un fond virtuel en vidéo par exemple) il faut ajouter une couche supplémentaire. Cette couche est traditionnellement nommée “couche Alpha” ou “canal Alpha”. Voir http://fr.wikipedia.org/wiki/Alpha_blending pour plus d’infos…

Le principe est simple. Cette couche, elle aussi en valeurs de gris et codée comme toutes les autres couches, va définir le degré de transparence des pixels, à la manière d’un passe-partout ou d’un filtre sur un objectif photo.

Les petites carrés gris et blancs à gauche de l'image symbolisent la transparence.

Les petits carrés gris et blanc à gauche de l’image symbolisent la transparence.

Plus la couche alpha est sombre, plus le bitmap sera transparent. Plus la couche alpha est claire, plus le bitmap sera opaque. Le blanc étant l’opacité à 100% et le noir la transparence complète.

Si le canal alpha est tout noir, le bitmap est totalement transparent.

Si le canal alpha est tout noir, le bitmap sera totalement transparent.

Selon que la couche alpha soit floue ou très nette, la transparence sera graduelle ou, au contraire, tranchée.

Un canal alpha peut être peint avec l'outil pinceau ou construit à l'aide des outils de sélection.

Un canal alpha peut être peint avec l’outil pinceau ou construit à l’aide d’outils de sélection.

Une combinaison possible des exemples précédents.

Une combinaison possible des exemples précédents.

Voici un exemple de couche alpha appliqué à une photo : en premier la photo d’origine, en second la couche alpha et enfin le résultat obtenu en combinant les deux.

Les deux photos d'origine : un gros plan de casque médiéval et un fond de ciel nuageux.

Les deux photos d’origine : un gros plan de casque médiéval sur fond clair et un fond de ciel nuageux.

Le casque détouré et le canal alpha correspondant.

Le casque après détourage et le canal alpha correspondant.

Le résultat final avec les deux images superposées.

Le résultat final avec les deux images superposées.

La couche alpha n’est que l’exemple le plus courant de couche complémentaire qu’on peut adjoindre à un bitmap. Non seulement, on peut avoir plusieurs couches alpha dans un seul bitmap pour des besoins spécifiques (en 3D, en vidéo, en mise en page, etc) mais on peut avoir aussi d’autres types d’informations comme des donnés de profondeur générées par un logiciel de 3D, des masques d’objet ou de zones, des masques d’ombres, etc. Le terme de canal alpha est donc un terme générique pour toutes les couches d’informations complémentaires ne faisant pas partie des couches visibles d’un bitmap.

Pour en revenir à la transparence, il serait donc faux également de penser qu’on gomme des pixels lorsqu’on travaille sur la transparence d’une image. En réalité on peint du noir sur une couche alpha… Mais il est vrai que la confusion est aisée si on confond couche alpha et transparence de calque (voir plus bas).

Un fichier bitmap contenant des calques peut très bien contenir également des couches alpha, à la différence que les couches alpha ne seront plus seules à déterminer la transparence d’une image et qu’elles seront alors plutôt utilisées comme zone de stockage d’informations complémentaires ou de sélections.

5. Les calques : des lots de couches

On a vu qu’un bitmap pouvait contenir des couches visibles (RVB ou CMJN par exemple) et des couches complémentaires (comme les couches alpha).
À priori, lorsqu’on ouvre un bitmap brut dans Photoshop ou The Gimp : une photo prise avec un appareil photo numérique ou le scan d’un dessin ; ce bitmap ne contient aucune couche alpha ni aucun calque. Donc la génération d’une couche alpha ou la transformation de l’image de base en calque est généralement une action volontaire ou induite par l’utilisation d’un filtre nécessitant cette transformation. De même, la notion de calque dans un bitmap est une notion qui n’est accessible qu’à partir de logiciels dédiés. J’ai déjà cité Photoshop et The Gimp, mais il y a aussi des logiciels comme Corel Painter ou Corel PhotoPaint, Autodesk Sketchbook ou Mudbox, Maxon BodyPaint, etc. Cette liste étant loin d’être exhaustive.

Lorsqu’on crée un calque, que fait-on ?

On construit un ensemble cohérent de couches intermédiaires composé d’un lot de couches visibles (l’image) et d’une couche alpha un peu particulière qui va gérer la transparence du calque en question.
Cet ensemble de couches à cela d’unique que ‒ contrairement à une couche alpha qui ne supprime aucune information dans les couches visibles mais qui ne fait que les masquer ‒ tout pixel gommé dans un calque est effectivement perdu, toutes ses informations de couleur ne seront plus accessibles par la suite (hormis les traditionnelles annulations, gérées différemment selon les logiciels). Il y a donc une confusion aisée entre ajouter du gris sur une couche de transparence ou gommer des pixels puisque dans ce cas précis on perd effectivement les informations de couleurs.

Ce n’est que pure supposition de ma part : j’imagine que les couches d’un calque sont codées différemment de manière à minimiser autant que possible l’impact sur la consommation de mémoire vive, la couche de transparence est donc vraisemblablement imbriquée aux couches de couleur, ou quelque chose du genre. Sans conviction…, à vos commentaires si vous avez des informations complémentaires, je n’ai pas creusé cet aspect.

Pourquoi utiliser des calques ?

Le terme de calque est en soi une analogie à la technique des anciens designers (architectes, graphistes, illustrateurs, etc) qui consistait à séparer leurs dessins, croquis, projets en plusieurs morceaux de dessins sur calques empilés afin de faciliter les retouches ou les changements en cours d’élaboration (pour rappel, le papier calque est un papier translucide qui permet de reporter un trait sur une feuille de papier en noircissant le verso au crayon et en repassant sur le trait au recto). Il n’était donc pas nécessaire de tout redessiner si une partie ne convenait pas, le designer n’avait qu’à faire un nouveau calque de la partie incriminée. Une fois le projet validé, on reportait chaque calque au propre ou on faisait un cliché de l’ensemble. Je simplifie un peu, mais c’était le principe général…

En numérique, les calques permettent donc d’empiler des morceaux de projet, de photo, de dessin pour les assembler en un tout cohérent. Comme le papier calque, ils peuvent laisser apparaître ce qui se trouve en dessous pour peu qu’ils ne soient pas totalement opaques ou totalement recouverts. Et cette opacité pour chacun des calques peut être graduelle, floue ou nette. Combinée de la transparence du calque en plus de masques de fusion ou non. On peut aussi paramétrer le calque dans sa globalité pour qu’il ne soit que partiellement opaque. Les possibilités et les combinaisons sont très nombreuses.

Exemple de construction d'une image par superposition de calques. Ici la couche alpha générale.

Exemple de construction d’une image par superposition de calques. Ici la couche alpha générale.

Ajout d'une texture de fond.

Ajout d’une texture de fond. Les carrés gris et blanc symbolisent la transparence.

Ici le calque des couleurs de l'avant plan.

Ici l’ajout du calque des couleurs de l’avant plan.

Quelques parasols...

Quelques parasols…

Enfin, le dernier calque des traits et rehauts.

Enfin, le dernier calque des traits et rehauts.

Il est donc possible d’incruster un personnage sur un fond différent de celui sur lequel il se trouve : il suffit d’empiler un calque contenant le fond et un calque contenant le personnage qu’on aura préalablement détouré ‒ c’est à dire dissocié du fond sur lequel il se trouvait en effaçant les parties en trop. On peut par la suite ajouter un troisième calque sur lequel on dessinera un soleil, etc. L’avantage des calques est qu’on pourra tester plusieurs positions pour le soleil et le personnage, il suffira de faire glisser tel ou tel calque pour adapter la composition, sans devoir tout refaire. Tout comme les anciens designers qui déplaçaient ou tournaient un calque pour tester un nouvel assemblage d’éléments.

Par exemple, ici les parasols ont été déplacés. Comme les couleurs d'avant-plan avaient été peintes séparément sur divers calques (qui n'ont pas été développés dans ces exemples), il a été possible de faire passer les parasols "derrière" les arbres.

Par exemple, ici les parasols ont été déplacés. Comme les couleurs d’avant-plan avaient été peintes séparément sur divers calques (qui n’ont pas été développés dans ces exemples), il a été possible de faire passer les parasols “derrière” les arbres.

6. Les modes de fusion

La puissance des calques ne se limite pas à de simples opérations de déplacement ou de superposition. Les calques peuvent aussi parler entre eux : on peut faire interagir un calque avec tous les calques qui se trouvent en dessous via le réglage de son opacité globale, un masque de fusion ou les modes de fusion.

Par l’opacité globale, on peut rendre un calque partiellement transparent, sans pour autant altérer les pixels du calque lui-même, et donc laisser apparaître plus ou moins fort les calques qui se trouvent en dessous.

Le masque de fusion correspond globalement à l’adjonction d’une couche alpha supplémentaire au calque. Ce qui permet de faire varier localement la transparence d’un calque sans toucher au calque lui-même (sans ajouter ou retirer des pixels au calque). Que ce soit par touches de couleur sur un masque de fusion de type bitmap ou par la création de formes sur un masque de fusion de type vectoriel ou les deux combinés.

Les modes de fusion permettent de faire interagir un calque avec tous les calques qui se trouvent en dessous de celui-ci au niveau de la colorimétrie. On peut par exemple demander que les couleurs de ce calque se multiplient à tout ce qui se trouve en dessous…

Mode de fusion : multiplication.

Mode de fusion : multiplication.

Que ce calque éclaircisse ce qui se trouve en dessous…

Mode de fusion : éclaircissement.

Mode de fusion : éclaircissement.

Que la luminosité de ce calque altère la luminosité de ce qui se trouve en dessous…

Mode de fusion : luminosité.

Mode de fusion : luminosité.

Et cætera. Dans Photoshop, il existe plus d’une vingtaine de modes de fusion différents. Il serait impossible de tous les passer en revue ici. Je vous invite donc à les tester avec vos propres compositions. Les résultats peuvent parfois être très surprenants ! Les modes et masques de fusion ne sont pas propres à Photoshop, on les retrouve dans beaucoup de logiciels comme ceux cités plus haut mais en quantités variables.

7. Petit détour par les formats de fichier

Comme toujours, le format de fichier propriétaire de votre logiciel de montage photo ou de peinture numérique préféré sera toujours le format le plus adapté pour conserver toutes les données de couches, de canaux alpha et de calques. Ce sera aussi généralement le format de fichier le plus lourd à partager mais aussi possiblement le moins compatible (à l’exception du format Photoshop qui est de plus en plus répandu).

Toutefois, selon vos besoins, il existe des formats de fichier plus ou moins adaptés selon les usages ou les données indispensables à conserver pour le partage de vos fichiers. Par exemple, pour conserver les données de transparence pour la publication sur un site web (qui aurait un fond coloré par exemple), les formats PNG 8bits, PNG 24bits et GIF sont les plus adaptés. En PNG 8 et GIF, on perd beaucoup de données car les fichiers sont convertis en couleurs indexées mais les fichiers peuvent être très légers. Le PNG 24 reste par contre en couleurs RVB. Il sera généralement plus lourd que le JPEG standard mais conservera un canal alpha.

Si on veut conserver les données de canal alpha et rester en RVB sans pour autant publier sur le web, le format Targa TGA est assez bien adapté mais il est limité à 8 bits par couche, il est par contre assez bien supporté par les logiciels de montage vidéo. Le format PNG 32bits est lui prévu pour des fichiers en 16 bits par couche avec un canal alpha. Et, qui peut le plus peut le moins, les formats TIFF et PDF s’en sortent très bien aussi.

Pour conserver la plupart des données de couches, de canaux alpha et de calques tout en étant le plus compatible possible, outre le format Photoshop PSD, il y a le format TIFF. Outre la conservation de toutes les données, le format TIFF supporte tous les modes colorimétriques (RVB, CMJN, Tons directs, etc), et ce en 8 bits, 16 bits (pour tous les modes) et 32 bits (pour le gris et le RVB) avec, selon les cas, des modes de compression très performants.

Pour conserver des fichiers comprimés en mode CMJN + tons directs en 8 ou 16 bits mais sans données de calques ou de canal alpha, le JPEG2000 ou le D3D/DDS sont de bonnes alternatives. En 8 bits, on peut aussi utiliser le DCS 2.0. Ce sont toutefois des formats de fichiers plus confidentiels et plus rarement utilisés que le format TIFF.

Il existe encore beaucoup d’autres formats de fichiers plus ou moins adaptés selon les cas. Je n’ai répertorié ici que les plus courants. Vous pouvez trouver ici une liste assez complète (en anglais) : http://en.wikipedia.org/wiki/Image_file_formats

Ici se termine mon petit tour d’horizon des éléments constituant un fichier bitmap. Il y aurait encore beaucoup à dire mais si vous êtes arrivés jusqu’ici c’est que vous avez déjà eu beaucoup de courage tant la matière est dense. Merci pour votre lecture et bon amusement dans vos expérimentations des fichiers bitmap.
N’hésitez-pas à laisser vos commentaires ou vos questions.

 

Pin It on Pinterest

Share This