# Native Code > برنامه نویسی در Delphi > کامپوننت های سایر شرکت ها، و توسعه کامپوننت >  قرار دادن دو عکس روی هم و تبدیل به یک عکس؟

## pooyesh

با سلام 
 چطور میشه یک عکس رو روی یک عکس دیگه قرار داد و اون را ذخیره کرد
یعنی یکی بشن؟ :oops:

----------


## Touska

کامپوننتهای زیادی برای این کار ها هست.

یکسری به این سایت بزن .

http://www.leadtools.com

 :flower:

----------


## net_ved

اول باید 2تا متغیر از نوع Tbitmap درست کنی...
public
 b1,b2 &#58;Tbitmap;

دوتا عکس تو b1,b2 از نوع BMP لود کن....عکسا باید یک اندازه باشن وگنه برنامه خطا می ده...یکیش اینجوری...


var
s&#58;string;
begin
 if opendialog1.execute then

begin
 b1&#58;=tbitmap.create;
s&#58;= opendialog1.filename;
b1.loadfromfile&#40;s&#41;;
end;
end;




var
x,y&#58;integer;
p1&#58;PByteArray;
p2&#58;PByteArray;
begin
 Image1.Height&#58;=b1.Height;
 Image1.Width&#58;=b1.Width;
for y&#58;=0 to b1.Width-1 do
  begin
   p1&#58;=b1.ScanLine&#91;y&#93;;
   p2&#58;=b2.ScanLine&#91;y&#93;;
    for x&#58;=0 to b1.Width-1 do
      begin
      Image1.Canvas.Pixels&#91;x,y&#93;&#58;=
      rgb&#40;&#40;&#40;p1&#91;&#40;x*3&#41;-4&#93;&#41;+&#40;p2&#91;&#40;x*3&#41;-4&#93;&#41;&#41; div 2,
          &#40;&#40;p1&#91;&#40;x*3&#41;-2&#93;&#41;+&#40;p2&#91;&#40;x*3&#41;-2&#93;&#41;&#41; div 2,
          &#40;&#40;p1&#91;&#40;x*3&#41;-3&#93;&#41;+&#40;p2&#91;&#40;x*3&#41;-3&#93;&#41;&#41; div 2&#41;;
      end;     
end;


این کد باعث می شه...بعضی از pixelهای عکس 1 با عکس 2 مخلوط بشه..
یعنی بعضی از pixelهای عکس 1 و بعضی ها از عکس 2 تو image لود می شه...اگه ریاضیت خوب باشه می تونی با یکم تغیر این الگوریتم کلی کار جالب رو 2تا عکسات بکنی

----------


## دنیای دلفی

اگر می خواهید با هر نوع فرمتی کار کنید باید از ImageEn استفاده نمائید .

نسخه Trial آن را از سایت www.jonoobshop.com دریافت نمائید .
 :موفق:

----------


## net_ved

کار با تصاویر انقد ساده و لذت بخشه که من به شما پیشنهاد می کنم از کامپوننت استفاده نکنید..از ما گفتن :oops:

----------


## gbg

سلام
ImageEn رو چطور میشه خرید

----------


## Touska

با آقای کرامتی تماس بگیرید . مدیر سایت.

----------


## pooyesh

با تشکر از همه دوستان  :flower: 
من یک راه حل مناسب برای این کار (قرار دادن دو عکس روی هم یا به عبارتی قرار دادن قسمتی از یک عکس و روی عکس دیگه) پیدا کردم که در اینجا قرار می دم تا دیگران هم اگر به این مسئله بر خوردند بتونن بدون استفاده از کامپوننت ها  :cry: این کار ساده را انجام دهند
یک گله ای داشتم از دوستانی که سعی در معرفی کامپوننت ها بجای کد نویسی دارن، با این کار برای هر کار کوچکی مجبوریم بجای استفاده از فکر خود از فکر و کامپوننت هایی که دیگران نوشته اند استفاده کنیم :wink:  :wink:  :موفق: 

procedure TForm1.Button1Click&#40;Sender&#58; TObject&#41;;
begin
  if OpenDialog1.Execute then
    Image1.Picture.LoadFromFile&#40;OpenDialog1.FileNa  me&#41;;
end;

procedure TForm1.Button3Click&#40;Sender&#58; TObject&#41;;
begin
  Image2.Canvas.CopyRect&#40; Rect&#40;0,0,50,50&#41;,Image1.Canvas, Rect&#40; 0, 0, 20,20&#41;&#41;;
end;

procedure TForm1.Button2Click&#40;Sender&#58; TObject&#41;;
begin
  if OpenDialog1.Execute then
    Image2.Picture.LoadFromFile&#40;OpenDialog1.FileNa  me&#41;;
end;
لازم به ذکر است که برای اجرای کد بالا احتیاج به سه button دو Image و یک OpenDialog1 می باشد
همچنین عکس های شما باید bitmap  باشدو الا خطا می دهد. :موفق:

----------


## koosha system

پایان بحث:

----------

