Спасибо, там много можно изучить
есть еще такой вариант
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
TPalette = record
Version: Word;
NumEntries: Word;
PalEntry: array [byte] of TPaletteEntry;
end;
var
b,t: TBitmap;
pal,tpal: TPalette;
x,y,i: integer;
max: byte;
src,dst: pByteArray;
begin
b:=TBitmap.Create;
b.LoadFromFile('test.bmp');
GetPaletteEntries(b.Palette, 0, 256, pal.PalEntry);
max:=0;
for y:=0 to b.Height-1 do begin
src:=b.ScanLine[y];
for x:=0 to b.Width-1 do
if src[x]>max then max:=src[x];
end;
t:=TBitmap.Create;
t.Assign(b);
tpal.Version:=$0300;
tpal.NumEntries:=2;
for i:=0 to max do begin
tpal.PalEntry[0]:=pal.PalEntry[i];
pDWORD(@tpal.PalEntry[1])^:=0;
t.Palette:=CreatePalette(pLogPalette(@tpal)^);
for y:=0 to t.Height-1 do begin
src:=b.ScanLine[y];
dst:=t.ScanLine[y];
for x:=0 to t.Width-1 do dst[x]:=ord(src[x]<>i);
end;
t.SaveToFile(IntToHex(i, 2)+'.bmp');
end;
t.Free;
b.Free;
end;
единственно не ясно как туда прикрутить pf1bit - сразу конвертацию в 1 битный формат в момент
Код:
t.SaveToFile(IntToHex(i, 2)+'.bmp');