图像亮度和对比度问题! ( 积分: 50 )

  • 主题发起人 主题发起人 kinglong008
  • 开始时间 开始时间
K

kinglong008

Unregistered / Unconfirmed
GUEST, unregistred user!
有一JPG图像,怎样调它的亮度和对比度啊!!!请多多指教!!
 
有一JPG图像,怎样调它的亮度和对比度啊!!!请多多指教!!
 
亮度为(R+G+B)/3
对比度为1-3*Min(R,G,B)/(R+G+B)
获取所有点的像素就ok了
 
不太明白,能不能祥细点??
 
亮度指颜色值强度
对比度指色差强度
RGB指的是三原色

 
在photoshop中找到亮度和对比度调节调到你的要求就行了
 
chaogq:
用PHOTOSHOP谁不会调啊!!
 
我这没图像处理的资料,大概的操作原理如下所示:

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;
 
接受答案了.
 
后退
顶部