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

Изменение глубины цвета изображения

01.01.2007
unit Unit1;
 

 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  public
    function ChangeColorDepth(const FromBMP: TBitmap; out ToBMP: TBitmap;
      const ColorDepth: TPixelFormat): Boolean;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  B24, B16: TBitmap;
begin
  B24 := TBitmap.Create;
  try
    B24.LoadFromFile('c:\1.bmp');
    if ChangeColorDepth(B24, B16, pf4bit) then
    try
      B16.SaveToFile('c:\2.bmp');
    finally
      B16.Free;
    end;
  finally
    B24.Free;
  end;
end;
 
function TForm1.ChangeColorDepth(const FromBMP: TBitmap;
  out ToBMP: TBitmap; const ColorDepth: TPixelFormat): Boolean;
begin
  Result := True;
  try
    ToBMP := TBitmap.Create;
    ToBMP.Width := FromBMP.Width;
    ToBMP.Height := FromBMP.Height;
    ToBMP.PixelFormat := ColorDepth;
    ToBMP.Canvas.Draw(0, 0, FromBMP);
  except
    if ToBMP <> nil then ToBMP.Free;
    Result := False;
  end;
end;
 
end.

Автор: Rouse_

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