Ein BMP (DIB) -Bild besteht aus einem Header, gefolgt von unkomprimierten 1- Farbdaten (für 24-bpp-Bilder sind es 3 Bytes pro Pixel, die in umgekehrter Zeilenreihenfolge und mit 4 Bytes Zeilenschritt gespeichert sind).
Die Bytes für Farbdaten werden zur Darstellung von Farben verwendet (dh keines von ihnen wird vom Dateiformat 2 "vorgeschrieben" , sie stammen alle aus der Farbe jedes Pixels), und es besteht eine perfekte 1: 1-Entsprechung zwischen Pixelfarben und geschriebenen Bytes in der Datei; Mit perfekt ausgewählten Farben können Sie also tatsächlich alles, was Sie wollen, in die Datei schreiben (mit Ausnahme des Headers).
Wenn Sie die generierte Datei im Editor öffnen, werden die Farbdaten als Text angezeigt. Sie können immer noch deutlich an der Kopfzeile (dem Teil vom BM
Anfang des Textes) erkennen, die vom Dateiformat vorgegeben wird.
Meiner Meinung nach wurde dieses Video folgendermaßen erstellt: Zuerst berechnete der Autor die für die Bitmap erforderliche Größe und erstellte eine DIB-Datei mit der richtigen Größe, die mit einer Farbe gefüllt ist, die sich zu einem einfachen Muster erweitert (z. B. alle Bytes 65 => 'A'
). Ersetzte dann ein solches Muster durch den "Nutzlast" -Code, wie im Video gezeigt.
Beachten Sie jedoch, dass es nicht unmöglich ist, das Ganze mit dem Editor von Hand zu gestalten - mit dem Farbauswahldialog, einer ASCII-Tabelle und Grundkenntnissen des DIB-Formats ist dies möglich, aber es wäre viel langsamer und fehleranfälliger.
Weitere Infos zum DIB-Format
- Es gibt RLE-komprimierte DIBs, aber in diesem Fall werden unkomprimierte Bitmaps verwendet (und sie werden sowieso sehr selten verwendet).
- Mit Ausnahme des Schrittes wurde die Verwendung von Zeilen mit einem Vielfachen von 4 Bytes vermieden.