PDA

View Full Version : پیکسل تصویر



kamalhamidi
سه شنبه 21 مهر 1388, 21:38 عصر
سلام

من میخوام اندازه یه تصویر رو بگیرم. منظورم پیکسل آن هست

همچنین من این تصویر رو در برنامه ام لود نمیکنم و با یک OpenDialog آن رو انتخاب میکنم و اندازش رو در یک مسیج نمایش میدم

تشکر

young_man1365
سه شنبه 21 مهر 1388, 22:25 عصر
مطمئنا" از کامپوننت Timage استفاده میکنی. کد های زیر عرض و طول تصویر داخل Timage1 رو بصورت مسیج نشون میدن:



showmessage(IntToStr(image1.picture.width));

and

showmessage(IntToStr(image1.picture.height));

kamalhamidi
سه شنبه 21 مهر 1388, 22:50 عصر
همونطور که در پست اول گفتم من تصویر رو در برنامه لود نمی کنم ، در واقع من با این کد میخوام پلاگین بسازم و در این پلاگین هیچ فرمی وجود نداره که بخوام TImage رو درون اون بزارم

Mahmood_M
چهارشنبه 22 مهر 1388, 00:25 صبح
همونطور که در پست اول گفتم من تصویر رو در برنامه لود نمی کنم ، در واقع من با این کد میخوام پلاگین بسازم و در این پلاگین هیچ فرمی وجود نداره که بخوام TImage رو درون اون بزارم
می تونید تصویر مورد نظر رو در یک متغیر از نوع تصویر باز شده قرار بدید و مقدار Width و Height اون رو بخونید ، مثال :
برای فایل JPG :

procedure TForm1.BitBtn1Click(Sender: TObject);
var
GP : TJPEGImage;
begin
if OpenPictureDialog1.Execute then
begin
GP := TJPEGImage.Create;
try
GP.LoadFromFile(OpenPictureDialog1.FileName);
Caption := IntToStr(GP.Height)+' * ' + IntToStr(GP.Width);
finally
GP.Free;
end;
end;
end;

برای فایل BMP :

procedure TForm1.BitBtn2Click(Sender: TObject);
var
B : TBitmap;
begin
if OpenPictureDialog1.Execute then
begin
B := TBitmap.Create;
try
B.LoadFromFile(OpenPictureDialog1.FileName);
Caption := IntToStr(B.Height)+' * ' + IntToStr(B.Width);
finally
B.Free;
end;
end;
end;

برای فایل Icon :

procedure TForm1.BitBtn3Click(Sender: TObject);
var
IC : TIcon;
begin
if OpenPictureDialog1.Execute then
begin
IC := TIcon.Create;
try
IC.LoadFromFile(OpenPictureDialog1.FileName);
Caption := IntToStr(IC.Height)+' * ' + IntToStr(IC.Width);
finally
IC.Free;
end;
end;
end;

با استفاده از روش بالا باید برای فرمتهای مختلف کد نویسی کنید !
شاید کامپوننتی بتونید گیر بیارید که تمام این تصاویر رو در قالب یک فایل گرافیکی بپذیره و بعد طول و عرض رو بدست بیارید ...

موفق باشید ...

young_man1365
چهارشنبه 22 مهر 1388, 08:10 صبح
آقای حمیدی منظور منو درست متوجه نشدید. شما میتونید کلاس Timage رو تو یونیت برنامتون فراخوانی کنید. اینجوری از اکثر فرمت های رایج پشتیبانی میشه و نیازی نیست واسه هر فرمتی یه پروسیجر تعریف کنی.

شرمنده اگه توضیح قبلی واضح نبود (تازه واردم):لبخند:

hadisalahi2
چهارشنبه 22 مهر 1388, 09:27 صبح
خوب پس منظورتون رو واضح تر بیان کنید!

Mahmood_M
چهارشنبه 22 مهر 1388, 12:42 عصر
خوب پس منظورتون رو واضح تر بیان کنید!
یعنی چیزی شبیه به این :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Img : TImage;
begin
if OpenPictureDialog1.Execute then
begin
Img := TImage.Create(Self);
try
Img.Picture.LoadFromFile(OpenPictureDialog1.FileNa me);
Caption := IntToStr(Img.Width)+' * '+IntToStr(Img.Height);
finally
Img.Free;
end;
end;
end;


موفق باشید ...

kamalhamidi
چهارشنبه 22 مهر 1388, 13:15 عصر
سلام

ممنونم از پاسخ هاتون

خب آقای محمود کدی که شما گذاشتید باز هم نیاز داره تا کامپوننت TImage روی فرم باشه

لذا من یه مقدار تغییر در آن ایجاد کردم و به صورت زیر ازش استفاده کردم ، حالا بدون نیاز به کامپوننت خاصی میتونه اندازه پیکسل فرمتهای مختلف رو نمایش بده


procedure TForm1.BitBtn1Click(Sender: TObject);
var
Img : TPicture;
begin
if OpenPictureDialog1.Execute then
begin
Img := TPicture.Create;
try
Img.Bitmap.Canvas;
Img.LoadFromFile(OpenPictureDialog1.FileName);
Caption := IntToStr(Img.Width)+' * '+IntToStr(Img.Height);
finally
Img.Free;
end;
end;
end;

بازهم از دوستان بخاطر پاسخ هاشون تشکر میکنم

Mahmood_M
چهارشنبه 22 مهر 1388, 13:55 عصر
خب آقای محمود کدی که شما گذاشتید باز هم نیاز داره تا کامپوننت TImage روی فرم باشه
کدی که دوستمون پیشنهاد دادند و من هم به تایید حرف ایشون پست رو گذاشتم ، نیاز به حضور TImage روی فرم نداره ... !

لذا من یه مقدار تغییر در آن ایجاد کردم و به صورت زیر ازش استفاده کردم ، حالا بدون نیاز به کامپوننت خاصی میتونه اندازه پیکسل فرمتهای مختلف رو نمایش بده
بله ، کدی که نوشتید مناسب تر هست ...

موفق باشید ...