Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Пример записи информации в битмап

01.01.2007
type
  BITMAPFILEHEADER = packed record
    bfType:WORD; //Сигнатура BM
    bfSize:DWORD; //Размер файла
    bfReserved1:WORD; //Зарезервировано, всегда 0
    bfReserved2:WORD; //Тот же случай
    bfOffBits:DWORD; //Смещение(в байтах) от заголовка(его размер)
  end;
 
  BITMAPINFOHEADER = packed record
    biSize:DWORD; //Число байтов, необходимых этой структуре
    biWidth:LONGWORD; //Ширина
    biHeight:LONGWORD; //Высота
    biPlanes:WORD; //Число плоскостей устройства. =1
    biBitCount:WORD; //Число битов на пиксел. В примере =24
    biCompression:DWORD; //Тип сжатия. В примере =0(т.е. нет)
    biSizeImage:DWORD; //Размер изобр. 0, если нет сжатия
    biXPelsPerMeter:LONGWORD; //Горизонтальное разрешение (пиксел/м)
    biYPelsPerMeter:LONGWORD; //Вертикальное разрешение (пиксел/м)
    biClrUsed:DWORD; //Используемые цвета. 0 - исп. все
    biClrImportant:DWORD; //Важные цвета. 0 - все важны
  end;
//Если хотите знать больше, смотрите SDK->Поиск->BMP->Bitmap Storage
implementation
 
{$R *.dfm}
 
procedure FileToBMP(FileName:String;w,h:Integer);
var
bmp,aFile:TStream;
begin
 bmp:=TFileStream.Create(FileName+'.bmp',fmCreate);
 aFile:=TFileStream.Create(FileName,fmOpenRead);
 
 bf.bfType:=$4D42; //= BM
 bf.bfReserved1:=0;
 bf.bfReserved2:=0;
 bf.bfOffBits:=SizeOf(BITMAPFILEHEADER)+SizeOf(BITMAPINFOHEADER);
 
  bi.biSize:=SizeOf(BITMAPINFOHEADER);
  bi.biWidth:=w;
  bi.biHeight:=h;
  bi.biPlanes:=1;
  bi.biBitCount:=24;
  bi.biCompression:=0;
  bi.biSizeImage:=w*h*3;//24бита = 3байта
  //остальное в этом примере = 0
  bi.biXPelsPerMeter:=0;
  bi.biYPelsPerMeter:=0;
  bi.biClrUsed:=0;
  bi.biClrImportant:=0;
 
 bf.bfSize:=bf.bfOffBits+bi.biSizeImage;
 //запись заголовка
 bmp.Write(bf,SizeOf(BITMAPFILEHEADER));
 bmp.Write(bi,SizeOf(BITMAPINFOHEADER));
 //запись точек(кол-во байтов = bi.biSizeImage)
 bmp.CopyFrom(aFile,bi.biSizeImage);
 
 bmp.Free;
 aFile.Free;
 
end;

Автор: Аэтерос

Взято из https://forum.sources.ru