TJPEGImageを使用してビットマップを256色に減色

TJPEGImageを使用してフルカラーのビットマップを256色に減色する関数です。私個人の意見ですが、実用に十分耐えうるクオリティだと思います。なお、いうまでもありませんがJpegユニットをusesに追加してください。

procedure JpegReduce8Bit(Bitmap: TBitmap);
var
  Jpg: TJPEGImage;
begin
  if not (Bitmap.PixelFormat in [pf24bit, pf32bit]) then Exit;
  Jpg := TJPEGImage.Create;
  try
    Jpg.CompressionQuality := 100;
    Jpg.Assign(Bitmap);
    { Jpg.Compress;の前にJpg.PixelFormat := jf8bit; }
    { を置くとエラーになるので注意してください }
    Jpg.Compress;
    Jpg.PixelFormat := jf8bit;
    Bitmap.Assign(Jpg);
  finally
    Jpg.Free;
  end;
end;

Copyright 2001 Rinka Kouzuki All Rights Reserved.