Оглавление
§ Заголовочный файл
unsigned short - 16 бит
unsigned int - 32 бит
Для выгрузки BMP https://ru.wikipedia.org/wiki/BMP
struct __attribute__ ((__packed__ )) BITMAPFILEHEADER {
unsigned short bfType;
unsigned int bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned int bfOffBits;
};
struct __attribute__ ((__packed__ )) BITMAPINFOHEADER {
unsigned int biSize;
unsigned int biWidth;
unsigned int biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned int biCompression;
unsigned int biSizeImage;
unsigned int biXPelsPerMeter;
unsigned int biYPelsPerMeter;
unsigned int biClrUsed;
unsigned int biClrImportant;
};
§ Код для выгрузки BMP (16 Bit цвет)
framebuffer – это массив байтов (320x240x0.5)
Когда задается индексированная палитра (1,4 или 8 бит), то для нее обязательно строится таблица цветов
struct BITMAPFILEHEADER head = {0x4D42 , 38518 , 0 , 0 , 0x76 };
struct BITMAPINFOHEADER info = {0x28 , 320 , 240 , 1 , 4 , 0 , 0x9600 , 0xb13 , 0xb13 , 16 , 0 };
unsigned char colors[64 ] =
{
0x00 , 0x00 , 0x00 , 0x00 ,
0xc0 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0xc0 , 0x00 ,
0xc0 , 0x00 , 0xc0 , 0x00 ,
0x00 , 0xc0 , 0x00 , 0x00 ,
0xc0 , 0xc0 , 0x00 , 0x00 ,
0x00 , 0xc0 , 0xc0 , 0x00 ,
0xc0 , 0xc0 , 0xc0 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 ,
0xff , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0xff , 0x00 ,
0xff , 0x00 , 0xff , 0x00 ,
0x00 , 0xff , 0x00 , 0x00 ,
0xff , 0xff , 0x00 , 0x00 ,
0x00 , 0xff , 0xff , 0x00 ,
0xff , 0xff , 0xff , 0x00
};
FILE * fp = fopen ("output.bmp" , "wb" );
fwrite(&head, 1 , sizeof (struct BITMAPFILEHEADER ), fp);
fwrite(&info, 1 , sizeof (struct BITMAPINFOHEADER ), fp);
fwrite(&colors, 1 , 64 , record_file);
fwrite(framebuffer, 1 , 160 *240 , fp);
fclose (fp);
§ Важная особенность
При записи в BMP, записывать надо сначала последнюю строку, и по убыванию. То есть, вначале идет самая последняя строка изображения (сверху вниз), но по горизонтали всё в порядке (слева направо).
© 2011-2026 Все права защищены (23 янв, 07:45)