![]() |
|
لمحة عن التعامل مع الصور - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6) +--- قسم : دلفي والتعامل مع الرسوميات وبرمجة الألعاب (https://delphi4arab.net/forum/forumdisplay.php?fid=19) +--- الموضوع : لمحة عن التعامل مع الصور (/showthread.php?tid=1212) |
لمحة عن التعامل مع الصور - MjIrIm - 16-09-2009 في البداية السلام عليكم
بالمرفقات تطبيق به بعض الدوال و الأكواد لمن يريد أخذ فكرة أولية على Digital Image Processing لمحة: إقتباس :تعتبر الصورة مجموهة من Pixels ![]() {Function To Take a ScreenShot Of The Desktop} أخذ صورة لسطح المكتب كود : function GetScreenShot: TBitmap;
var
Desktop: HDC;
begin
Result := TBitmap.Create;
Desktop := GetDC(0);
try
try
Result.PixelFormat := pf32bit;
Result.Width := Screen.Width;
Result.Height := Screen.Height;
BitBlt(Result.Canvas.Handle, 0, 0, Result.Width, Result.Height, Desktop, 0, 0, SRCCOPY);
Result.Modified := True;
finally
ReleaseDC(0, Desktop);
end;
except
Result.Free;
Result := nil;
end;
end;عملية الاستدعاء كالاتي: كود : procedure TForm1.ScrShotBtnClick(Sender: TObject);
begin
Image1.Picture.Bitmap:= GetScreenShot;
end;{Procedure To Take a ScreenShot Of An Active Window} أخذ صورة للنافذة الحية في سطح المكتب كود : procedure ScreenShotActiveWindow(Bild: TBitMap; Val: Boolean);
var
c: TCanvas;
r, t: TRect;
h: THandle;
begin
c := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
h := GetForeGroundWindow;
if h <> 0 then
GetWindowRect(h, t);
try
r := Rect(0, 0, t.Right - t.Left, t.Bottom - t.Top);
Bild.Width := t.Right - t.Left;
Bild.Height := t.Bottom - t.Top;
Bild.Canvas.CopyRect(r, c, t);
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
end;عملية الاستدعاء كالاتي: كود : procedure TForm1.WinCapBtnClick(Sender: TObject);
begin
ScreenShotActiveWindow(Image1.Picture.BitMap, Ok);
end;{ ***** Image without Blue Color ***** } الحصول على صورة بدون الاعتماد على اللون الأزرق كود : procedure TForm1.ImgWBBtnClick(Sender: TObject);
var
Z,X,bX,Y : Integer;
Ligne : PByteArray;
begin
for Z := 0 to Form1.Image1.Picture.Bitmap.Width - 1 do begin
for Y := 0 to Form1.Image1.Picture.Bitmap.Height - 1 do begin
Ligne := Image1.Picture.Bitmap.ScanLine[Y];
for X := 0 to Form1.Image1.Picture.Bitmap.Width -1 do begin
bX := X * 3;
Ligne[bX] := (Ligne[bX+3]);
end;
end;
Form1.Image1.Repaint;
end;
end;{ ***** Image without Green Color ***** } الحصول على صورة بدون الاعتماد على اللون الأخضر كود : procedure TForm1.ImgWGBtnClick(Sender: TObject);
var
Z,X,bX,Y : Integer;
Ligne : PByteArray;
begin
for Z := 0 to Form1.Image1.Picture.Bitmap.Width - 1 do begin
for Y := 0 to Form1.Image1.Picture.Bitmap.Height - 1 do begin
Ligne := Image1.Picture.Bitmap.ScanLine[Y];
for X := 1 to Form1.Image1.Picture.Bitmap.Width do begin
bX := X * 3;
if X = Form1.Image1.Picture.Bitmap.Width then
Ligne[bX-2] := 0
else
Ligne[bX-2] := (Ligne[bX+1]);
end;
end;
Form1.Image1.Repaint;
end;
end;{ ***** Image without Red Color ***** } الحصول على صورة بدون الاعتماد على اللون الأحمر كود : procedure TForm1.ImgWRBtnClick(Sender: TObject);
var
X,Y, bX : Integer;
Ligne : PByteArray;
begin
for Y := 0 to Form1.Image1.Picture.Bitmap.Height -1 do begin
Ligne := Form1.Image1.Picture.Bitmap.ScanLine[Y];
for X := 0 to Form1.Image1.Picture.Bitmap.Width -1 do begin
bX := X * 3;
Ligne[bX+2] := 0;
end;
Form1.Image1.Repaint;
end;
end{ ***** Obtain Flow Image ***** } الحصول على صورة مشوشة كود : procedure TForm1.ImgFlowBtnClick(Sender: TObject);
var
Z,X,bX,Y : Integer;
Ligne : PByteArray;
begin
for Z := 0 to 3 do Begin
for Y := 0 to Form1.Image1.Picture.Bitmap.Height -1 do begin
Ligne := Image1.Picture.Bitmap.ScanLine[Y];
for X := 1 to Form1.Image1.Picture.Bitmap.Width -1 do Begin
bX := X * 3;
Ligne[bX+2] := (Ligne[bX+2]+Ligne[bX-1] ) Div 2;
Ligne[bX+1] := (Ligne[bX+1]+Ligne[bX-2]) Div 2;
Ligne[bX] := (Ligne[bX]+Ligne[bX-3]) Div 2;
end;
end;
Form1.Image1.Repaint;
end;
end;![]() ![]() لمن يريد التعامل مع الصور يستحن أن يستعمل صور بصيغة *.bmp تم ارفاق صورة لمن يريد التجربة مع الملفات بالتوفيق للجميع و السلام. لمحة عن التعامل مع الصور - TF6M - 16-09-2009 بارك الله فيك MjIrIm جميل جدا . لو إستعنت بصورة قوس قزح لأخذ قيم اللون بمجرد مرور المؤشر عليه لتضيفه كخيار لفلترة الصورة .. مجرد فكرة . بالتوفيق ,, |