我这没图像处理的资料,大概的操作原理如下所示:
procedure Brightness(const JpgFileName: string; Level: Integer; Canvas: TCanvas);
var
BMP: TBitmap;
JPG: TJpegImage;
P: PRGBTriple;
X, Y: Integer;
begin
JPG := TJpegImage.Create;
JPG.LoadFromFile(JpgFileName);
BMP := TBitmap.Create;
BMP.Assign(Jpg);
BMP.PixelFormat := pf24bit;
JPG.Free;
for Y := 0 to BMP.Height - 1 do
begin
P := BMP.ScanLine[Y];
for X := 0 to BMP.Width - 1 do
begin
// 百分比
P.rgbtBlue := Max(0, Min(255, P.rgbtBlue * Level div 100));
P.rgbtGreen := Max(0, Min(255, P.rgbtGreen * Level div 100));
P.rgbtRed := Max(0, Min(255, P.rgbtRed * Level div 100));
// 加法
{ P.rgbtBlue := Max(0, Min(255, P.rgbtBlue + Level));
P.rgbtGreen := Max(0, Min(255, P.rgbtGreen + Level));
P.rgbtRed := Max(0, Min(255, P.rgbtRed + Level));
} Inc(P);
end;
end;
Canvas.Draw(0, 0, BMP);
BMP.Free;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
const
JpgFile = 'C:/Documents and Settings/All Users/Documents/My Pictures/示例图片/Water lilies.jpg';
begin
Brightness(JpgFile, TrackBar1.Position, Canvas);
end;