Зображення BMP (DIB) складається із заголовка з поданим нестисненим 1 кольоровим даним (для зображень на 24 bpp - це 3 байти на піксель, що зберігаються у зворотному порядку рядків та з 4-х байтним рядком).
Байти для кольорових даних використовуються для представлення кольорів (тобто жоден з них не "накладений" файлом у форматі 2 , всі вони походять від кольору кожного пікселя), і існує ідеальна відповідність 1: 1 між кольорами пікселів та записаними байтами у файлі; таким чином, використовуючи ідеально підібрані кольори, ви можете фактично записати все, що завгодно у файл (за винятком заголовка).
Коли ви відкриєте згенерований файл у блокноті, кольорові дані будуть відображатися у вигляді тексту; ви можете чітко бачити із заголовка (частини від BM
початку тексту), що відповідає формату файлу.
На мою думку, це відео було зроблено таким чином: спершу автор підрахував розмір, необхідний для растрової карти, і створив файл DIB правильного розміру, наповнений кольором, який розширюється до простого шаблону (наприклад, всі байти 65 => 'A'
); потім замінили такий зразок кодом "корисного навантаження", як показано на відео.
Однак зауважте, що вручну все це зробити за допомогою блокнота - за допомогою діалогового вікна вибору кольорів, таблиці ASCII та основних знань про формат DIB це можна зробити, але це буде набагато повільніше і схильним до помилок.
Детальніше про формат DIB
- Існують стиснуті RLE DIB, але в цьому випадку використовуються нестиснені растрові карти (і вони все-таки використовуються дуже рідко).
- За винятком кроку, цього не вдалося використовувати рядки, кратні по 4 байти.