コントラスト

コントラスト補正を行う関数です。補正値は-100から100の範囲とします。元ネタはAKさんのホームページにありますので、アルゴリズムなどについてはそちらを参照してください。

AK's Laboratory

で、ここではテーブルを作成して高速に動作する関数を作成しました。コードに対する説明も必要ないと思うので今回はここまで(^^;

procedure Contrast(Bitmap: TBitmap; Value: Integer);
//コントラスト補正
var
  I, J: Integer;
  xValue: Double;
  Table: TByteTable;
begin
  if (Value = 0) or (Value > 100) or (Value < -100) then Exit;
  { 変換テーブルの作成 }
  xValue := Value / 100;
  for I := 0 to 255 do
  begin
    J := Round(I + xValue * (I - 127.5));
    if J > 255 then J := 255 else if J < 0 then J := 0;
    Table[I] := J;
  end;

  { ピクセルの変換処理 }
  StdTableFilter(Bitmap, Table);

  if Assigned(Bitmap.OnChange) then
    Bitmap.OnChange(Bitmap);
end;

Copyright 2001 Rinka Kouzuki All Rights Reserved.