PDA

View Full Version : سوال: محدود کردن اندازه تصویر در کنترل Image



Fastdesign
جمعه 14 بهمن 1390, 18:56 عصر
با سلام

می خوام اندازه تصویر را در کنترل Image محدود به عکس هایی با اندازه مثلا :4*3 کنم .

دوستان به نظر شما باید چجوری این کار را انجام بدم .

با تشکر

SAASTN
جمعه 14 بهمن 1390, 19:37 عصر
اگر مسئله فقط نمایشیه که خودتون عرض و ارتفاع Image رو به هر مقداری که می خواید ست کنید و Stretch رو True کنید. اما اگه می خواید موقع لود کردن عکس توسط کاربر چک کنید که تو فایل انتخاب شده این نسبت رعایت شده باشه، ابتدا عکس رو تو یه TBitmap لود کنید و چک کنید که مثلا اختلاف نسبت Width/Height با مقدار 0.75 کمتر از 0.01 باشه، توصیه می کنم برای مقایسه نسبتها هیچ وقت از = استفاده نکنید.

BORHAN TEC
جمعه 14 بهمن 1390, 19:39 عصر
برای این کار یک مثال ساده آماده کرده ام که می توانید از آن استفاده کنید و اگه نیاز بود تغییرش بدین:
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TBitmap;
FileName: string;
Const
PixelsInCm = 37.795275591;
begin
FileName := 'c:\test.bmp'; // for example
bmp := TBitmap.Create;
try
bmp.LoadFromFile(FileName);
if (bmp.Width = Round(3 * PixelsPerInch)) AND
(bmp.Height = Round(4 * PixelsPerInch)) then
begin
Image1.Picture.Bitmap.LoadFromFile(FileName);
end
else
begin
ShowMessage('This Image Is Not "3*4"');
end;
finally
bmp.Free;
end;
end;
البته پیشنهاد می کنم که حتماً یک ضریب تغییر برای عرض و ارتفاع عکس هم در نظر بگیرید.

SAASTN
جمعه 14 بهمن 1390, 20:31 عصر
برای این کار یک مثال ساده آماده کرده ام
آقا اون PixelsPerInch مربوط به فرمه ها، ربطی به DPI فایل تصویری یا حتی پرینتر نداره. اگه مشکل محدودیت حجم فایل نداشته باشیم که چک کردن همون نسبت عرض به ارتفاع کافیه، اگر هم بخوایم محدودیت حجمی بذاریم که یا حجم خود فایل رو چک می کنیم یا یه ماکسیموم برای تعداد پیکسل عرض و ارتفاع قرار می دیم. و در نهایت اینکه اگه منظور اینه که تصویر تو یه DPI مشخصی 4*3 باشه که عرض و ارتفاع تو اون DPI مشخصه و دیگه نیازی به محاسبه خاصی نداره. مثلا تو رزولوشن 72dpi تصویر 4*3 سانتی متری میشه 113*85 یا با 300dpi میشه 472*354.

BORHAN TEC
جمعه 14 بهمن 1390, 22:28 عصر
آقا اون PixelsPerInch مربوط به فرمه ها،
من در کد بالا فرض را بر این گذاشته ام که کاربر می خواهد از عکس هایی که در رایانه دارد استفاده کند و به کار بردن پکسل هم حاصل این تفکر است بنابر این فقط 72dpi را در نظر گرفته ام ولی اگر کاربر بخواهد عکسی را اسکن کند بسته به تنظیمات و مشخصات اسکنر ممکن است برای یک عکس مشخص حاصل عملیات اسکن با دو دستگاه اسکنر مختلف، عکسهای با اندازه های متفاوت باشد که در آن صورت طبق گفته شما باید فقط نسبت طول به عرض را مدنظر قرار دهیم.

SAASTN
جمعه 14 بهمن 1390, 23:43 عصر
من در کد بالا فرض را بر این گذاشته ام که کاربر می خواهد از عکس هایی که در رایانه دارد استفاده کند و به کار بردن پکسل هم حاصل این تفکر است بنابر این فقط 72dpi را در نظر گرفته ام
متوجه منظور شما نمی شم، عکس 4*3 عکس پرسنلیه و عکس پرسنلی هم که تو Paint رایانه کاربر شما خلق نمیشه. اگر کاربر کنترلی روی نحوه ایجاد عکس داشت، خودش عکسها رو تو فرمت مورد نظرش تولید می کرد و دیگه نیازی به کنترل نبود، ولی وقتی صحبت از کنترل میشه من اینطور متوجه می شم سورس عکسها ممکنه رنج وسیعی از دوربینها و اسکترها باشه و بدتر از اون کسایی که این عکسها رو تهیه کردن هم ممکنه سطوح مختلفی از دانش نسبت به تصویر و سایز و رزولوشن داشته باشن.
اگه واقعا پرونده سازی داره در محلی انجام میشه که نرم افزار ما در حال اجراست و ارباب رجوع عکس رو میاره و اپراتور اسکن میکنه، قشنگتر اینه که نرم افزار اسکنر رو شناسایی کنه و خودش سایز و رزولوشن تصویر رو تعیین کنه، در این مورد هم که مطلب زیاد هست.

BORHAN TEC
شنبه 15 بهمن 1390, 00:20 صبح
توجه منظور شما نمی شم، عکس 4*3 عکس پرسنلیه و عکس پرسنلی هم که تو Paint رایانه کاربر شما خلق نمیشه.دوستمان در صورت مسئله از عکس پرسنلی یاد نکرده اند و برای اندازه عکس هم از کلمه مثلاً استفاده کرده اند ولی طبق گفته شما و ایشان، چندان دور از ذهن نیست که منظورشان عکس پرسنلی باشد. :متفکر:

تو Paint رایانه کاربر شما خلق نمیشهاحتمال دارد که ایشان هدف دیگری داشته باشند، به عنوان مثال: ساخت نرم افزاری که تصاویر موجود در رایانه را جستجو کرده و نام فایل هایی که اندازه آنها 4*3 سانتی متر است را لیست کند.
به هر حال از آنجایی که سوال این کاربر به صورت کاملی گفته نشده نمی توان به قطعیت گفت که هدف ایشان از این کار چه بوده است تا بتوان راه حل مناسبی برای آن ارائه داد.

Fastdesign
شنبه 15 بهمن 1390, 08:45 صبح
جناب عشایری پاسخ شما جوابگوی نیاز شد .

منظورم این بود که فقط تصاویری که اندازه تصویر آن مثلا : 4*3 باشد . حالا برای اندازه های دیگه خودم می تونم تغییرش بدم .

از همکاریتون متشکرم .