View Full Version : به دست آوردن مقادیر RGB هر پیکسل هنگام استفاده از ScanLine
Hadizadeh
دوشنبه 29 اسفند 1384, 11:12 صبح
با سلام. چه جوری میشه توسط دستور ScanLineمقادیر R,G,B مربوط به هر پیکسل رو به دست آورد؟
Touska
دوشنبه 29 اسفند 1384, 14:30 عصر
قبلا این مثالو گذاشته بودم بازم می ذارم :
procedure gray_scale ( clips : tbitmap ) ;
var
x , y : integer ;
p0 : sline ;
gray : integer ;
clip : tbitmap ;
begin
clip := tbitmap.create ;
clip.Assign ( clips ) ;
clip.pixelFormat := pf24bit ;
for y := 0 to clip.Height-1 do
begin
p0 := clip.ScanLine [ y ] ;
for x:= 0 to clip.Width-1 do
begin
Gray := Round ( ( p0 [ x ].B*0.114+p0 [ x ].G *0.587+p0 [ x ].R*0.299 ) ) ;
p0 [ x ].R := gray ;
p0 [ x ].G := gray ;
p0 [ x ].B := gray ;
end ;
end ;
form1.image2.picture.Graphic := clip ;
clip.Free ;
end ;
برای GrayScale کردن یک عکس به کار می رود.
Hadizadeh
دوشنبه 29 اسفند 1384, 15:48 عصر
ممنون .ولی تایپ sline چیه؟ تو کدوم یونیت تعریف شده؟ البته من کد زیر رو برای تعریف Sline به کار بردم. مسئله حله.
argb=array[0..1] of TRGB
sline=^argb;
Touska
دوشنبه 29 اسفند 1384, 17:16 عصر
اینم تعریف :
Trgb = record
B , G , R : byte ;
end ;
Prgb = array [ 0..0 ] of Trgb ;
SLine = ^Prgb ;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.