PDA

View Full Version : كار با تصاوير در دلفي



m_kafman
پنج شنبه 11 اردیبهشت 1393, 22:12 عصر
دوستان عزيز سلام
من در دلفي يك تصوير دارم كه داخل شي ء timage هست و ميخوام روي اين تصوير يك تصوير ديگه بندازم اما نكته مهم اينجاست كه وقتي ميخوام تصوير timage رو ذخيره كنم تصوير خروجي تلفيق 2 تصوير با هم باشه


دوستان كمك كنند ممنون ميشم

zidane
شنبه 13 اردیبهشت 1393, 10:16 صبح
در کد زیر ابتدا یک تصویر jpg لود می شود و سپس یک تصویر bmp روی آن رسم می شود:
uses jpeg;

var
bmp:TBitmap;
jpg:TJPEGImage;
begin
Image1.Picture:=nil;
jpg:=TJPEGImage.Create;
jpg.LoadFromFile('C:\1.jpg');
Image1.Canvas.Draw(0,0,jpg);
jpg.Free;
bmp:=TBitmap.Create;
bmp.LoadFromFile('C:\1.bmp');
Image1.Canvas.Draw(10,10,bmp);
bmp.Free;
end;

یوسف زالی
شنبه 13 اردیبهشت 1393, 11:13 صبح
سلام.
اگر منظورت از تلفیق transparent هست، با همین خصوصیت می تونی کارت رو راه بندازی.
اما اگر منظورت مثلا اینه که آبی و قرمز بشه بنفش، باید پیکسلی کار کنی.
می تونی از توابعی مثل BitBtl با پارامتر هایی مثل MERGEPAINT هم استفاده کنی.

بهروز عباسی
شنبه 13 اردیبهشت 1393, 11:54 صبح
تالار نامناسب !، عنوان مناسب !، کمی هم تکراری !


procedure MeltImages(aImage1, aImage2: TBitmap; OutPut: TImage;aiH, aiW: Integer);
var
X, Y: Integer; // Holds coordinates.
P, M: PByteArray; // For faster (than Pixels[]) access.
iHeight, iWidth: Integer;
begin
// Image
with OutPut do
begin
Picture.Bitmap := aImage1;
// Convert our images to true colour:
Picture.Bitmap.HandleType := bmDIB;
Picture.Bitmap.PixelFormat := pf24Bit;
Picture.Bitmap.HandleType := bmDIB;
Picture.Bitmap.PixelFormat := pf24Bit;
if aiH <= 0 then
iHeight := Height
else
iHeight := aiH;
if aiW <= 0 then
iWidth := Width
else
iWidth := aiW;

// Process the pixels:
For Y := 0 to iHeight - 1 do
begin
P := Picture.Bitmap.ScanLine[Y];
M := aImage2.ScanLine[Y];
For X := 0 to (iWidth) * 3 - 1 do
P[X] := (P[X] * (256 - M[X]) + (M[X])) div 256; // GOED!!
end;
end;
end;


// Use ...
procedure TForm1.btn_ExampleClick(Sender: TObject);
begin
MeltImages(img_1.Picture.Bitmap, img_2.Picture.Bitmap,img_out, img_1.Height,img_1.Width);
end;

m_kafman
پنج شنبه 18 اردیبهشت 1393, 13:03 عصر
با تشكر از دوستان عزيز

ببيند من عكس اولم يك تصوير است از يك موضوع خاص حال ميخ.اهم عكس دوم كه به صورت يك آرم مي باشد را در كنار اين عكس اول قرار دهم .
نكته مهم اينجاست كه عكس دوم ميخوام با حالت transparent=true بر روي عكس اول قرار گرفته و در نهايت خروجي يك تصوير با علامت آرم مربوطه ظاهر شود

اين حالاتي كه راهنمايي شد
تصوير را بر روي تصوير قرار مي دهد اما حالت transparent تصوير دوم falas بوده و تصوير زيرين يا تصوير اول رويت نمي شود

zidane
شنبه 20 اردیبهشت 1393, 09:19 صبح
من که فکر می کنم حتی روشی که گفتم رو تست هم نکردی! یا من منظورتو متوجه نمیشم
به هر حال این مثال رو درست کردم که فقط کپی پیست کنی

idehrayan
دوشنبه 05 آبان 1393, 10:13 صبح
سلام
روشی که من استفاده کردم:
ابتدا تصویر زمینه رو روی فرم بارگزاری کردم
زمینه تصویر رویی رو با دستور ترانسپارنت محو کردم (البته میتونید ارم یا تصویر مورد نظر رو به ایکن یا png تبدیل کنید و دیگه نیازی به انجام مرحله محو زمینه نباشه)
در ادامه از محیط فرم یک عکس گرفتم و ذخیره کردم
یه جستجو بزنید کلیه مراحل بصورت جداگانه توضیح داده شده