PDA

View Full Version : قرار دادن دو عکس روی هم و تبدیل به یک عکس؟



pooyesh
یک شنبه 11 اردیبهشت 1384, 23:53 عصر
با سلام
چطور میشه یک عکس رو روی یک عکس دیگه قرار داد و اون را ذخیره کرد
یعنی یکی بشن؟ :oops:

Touska
دوشنبه 12 اردیبهشت 1384, 10:40 صبح
کامپوننتهای زیادی برای این کار ها هست.

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

http://www.leadtools.com

:flower:

net_ved
دوشنبه 12 اردیبهشت 1384, 18:53 عصر
اول باید 2تا متغیر از نوع Tbitmap درست کنی...

public
b1,b2 :Tbitmap;

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



var
s:string;
begin
if opendialog1.execute then

begin
b1:=tbitmap.create;
s:= opendialog1.filename;
b1.loadfromfile(s);
end;
end;





var
x,y:integer;
p1:PByteArray;
p2:PByteArray;
begin
Image1.Height:=b1.Height;
Image1.Width:=b1.Width;
for y:=0 to b1.Width-1 do
begin
p1:=b1.ScanLine[y];
p2:=b2.ScanLine[y];
for x:=0 to b1.Width-1 do
begin
Image1.Canvas.Pixels[x,y]:=
rgb(((p1[(x*3)-4])+(p2[(x*3)-4])) div 2,
((p1[(x*3)-2])+(p2[(x*3)-2])) div 2,
((p1[(x*3)-3])+(p2[(x*3)-3])) div 2);
end;
end;


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

دنیای دلفی
سه شنبه 13 اردیبهشت 1384, 18:39 عصر
اگر می خواهید با هر نوع فرمتی کار کنید باید از ImageEn استفاده نمائید .

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

net_ved
سه شنبه 13 اردیبهشت 1384, 19:38 عصر
کار با تصاویر انقد ساده و لذت بخشه که من به شما پیشنهاد می کنم از کامپوننت استفاده نکنید..از ما گفتن :oops:

gbg
سه شنبه 13 اردیبهشت 1384, 21:03 عصر
سلام
ImageEn رو چطور میشه خرید

Touska
سه شنبه 13 اردیبهشت 1384, 21:33 عصر
با آقای کرامتی تماس بگیرید . مدیر سایت.

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


procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Image2.Canvas.CopyRect( Rect(0,0,50,50),Image1.Canvas, Rect( 0, 0, 20,20));
end;

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

koosha system
پنج شنبه 12 خرداد 1384, 12:49 عصر
پایان بحث: