Показать сообщение отдельно
  #11  
Старый 23.08.2011, 21:46
Pcrepair
 
Сообщения: n/a
По умолчанию

Спасибо, там много можно изучить

есть еще такой вариант
Код:
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');
Ответить с цитированием