Une image BMP (DIB) est composée d'un en-tête suivi de 1 non compressé données de couleur (pour des images de 24 bpp, il s'agit de 3 octets par pixel, stockés dans l'ordre inverse des lignes et avec un pas de 4 octets).
Les octets des données de couleur sont utilisés pour représenter les couleurs (c'est-à-dire qu'aucun d'entre eux n'est "mandaté" par le format de fichier 2 , ils proviennent tous de la couleur de chaque pixel), et il y a une correspondance 1: 1 parfaite entre les couleurs des pixels et les octets écrits dans le fichier; ainsi, en utilisant des couleurs parfaitement choisies, vous pouvez en fait écrire tout ce que vous voulez dans le fichier (à l'exception de l'en-tête).
Lorsque vous ouvrez le fichier généré dans le bloc-notes, les données de couleur seront affichées sous forme de texte; vous pouvez toujours voir clairement à partir de l'en-tête (la partie du BM
début du texte), qui est mandaté par le format de fichier.
À mon avis, cette vidéo a été réalisée de cette façon: d'abord, l'auteur a calculé la taille nécessaire pour le bitmap, et a créé un fichier DIB de la taille correcte rempli d'une couleur qui se développe en un motif simple (par exemple, tous les octets 65 => 'A'
); puis remplacé ce modèle par le code "payload", comme indiqué dans la vidéo.
Notez cependant qu'il n'est pas impossible de tout fabriquer à la main avec le bloc-notes - avec la boîte de dialogue de sélection de couleur, une table ASCII et une connaissance de base du format DIB, cela peut être fait, mais ce serait beaucoup plus lent et sujet aux erreurs.
Plus d'informations sur le format DIB
- Il existe des DIB compressés RLE, mais dans ce cas, des bitmaps non compressés sont utilisés (et ils sont de toute façon très rarement utilisés).
- À l'exception de la foulée, cela a été évité en utilisant des lignes multiples de 4 octets.