PDA

نسخه کامل مشاهده نسخه کامل : محدوديت سايز عكس



Mahsajoon
13-02-2009, 15:47
سلام
من با vb.net كار ميكنم..تو صفحه ي عضويتم وقتي كه كاربر عكسي را آپلود ميكنه عكسش را در ابعاد 150 * 200 نمايش ميده و با اندازه ي اصلي داخل فولدر آپلودم ذخيره ميشه!!!
حالا من ميخوام اين عكس با همين ابعاد داخل فولدر آپلودم ذخيره بشه نه با ابعاد اصليش
بايد چيكار كنم؟؟؟؟
تشكر:20:

_H2_
14-02-2009, 23:45
سلام
شما خیلی راحت میتوانید stream تصویر را در سرور بار گذاری کنید و هم متوجه شوید که فایل ارسالی آیا حقیقتاً یک تصویر است و هم از ابعاد ان مطمئن شوید و در صورت نیاز ابعاد ان را تغییر دهید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در صورت بزرگتر بودن یکی از راه های تغییر سایز تصویر استفاده از متد GetThumbnailImage است. و در نهایت با متد Svae تصویر را به فرمت دلخواه و در مسیر مشخص ذخیره کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

مثلاً فقط به عنوان نمونه به کد زیر دقت کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(مقدار True مشخص کننده انجام موفقیت آمیز است)
که با دستوری مثل این قابل اجرا استفاده است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

کد فوق به نوعی مخصوص آپلود تصاویر کوچک اعضا نوشته شده (آواتار).

- اول مقادیر ورودی را چک میکنید
)سایز فایل ثفر نباشد.
)سایز فایل بیش از 256K نباشد (انجام عملیات گرافیکی و کوچک کردن فایلهای بسیار بزرگ در سرور میتواند موجب کاهش بازدهی سایت شود و حتی راه نفوذی برای بدخواهان باشد تا ترافیک سایت را افزایش داده و مشکلات کم بود RAM ایجاد کنند.
)فایل داری پسوندی مجاز باشد.

- بعید مسیر ذخیره فایل را به دست می آوریم
فرض شده همه فایلها در یک پوشه و با یک پسوند واحد و با نام عدد عضویت ذخیره شده اند.
(این فرضیات بعداً کار نمایش تصاویر را خیلی ساده میکند.)

- تصویر در img بارگذاری میشود.

- اگر تصویر در محدوده ابعاد مجاز باشد و فرمتش هم gif باشد، یکراست ذخیره میشود (این عمل مانع حذف انیمیشن های احتمالی gif میشود.)

- اگر تصویر در محدوده ابعاد مجاز باشد ولی فرمتش gif نباشد، با فرمت gif ذخیره خواهد شد.
(البته در یک سیستم کامل و امن نباید به پسوند فایل که در نام آماده اعتماد کرد ولی فعلاً بیخیال!)

- در نهایت اگر تصویر بزرگتر باشد، برای حفظ نسبت طول به عرض عدد percent محاسبه شده و تصویر به سایز کوچک جدید ساخته و ذخیره میشود.

=====

این فقط یک نمونه برای یادگیری بهتر روشهای و امکانات متنوع دات نت بود.

در خیلی از موارد تصاویر کوچک را در بانک های اطلاعاتی ذخیره میکنند ولی ذخیره صحیح با در نظر گرفتن تمام جنبه ها در هارد هم مشکلی ندارد.
موفق باشید.

Mahsajoon
15-02-2009, 20:13
سلام.
من اولين كد را درون دكمه ي آپلودم گذاشتم زير Me.FileUpload1 خط ميكشه!چرا؟؟

_H2_
15-02-2009, 21:35
سلام

من اولين كد را درون دكمه ي آپلودم گذاشتم زير Me.FileUpload1 خط ميكشه!چرا؟؟
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
خوب نمیخواهید یه کنترلر FileUpload هم روی صفحه وبتان قرار دهید؟ کاربر با چی باید فایل را آپلود کند؟

Mahsajoon
15-02-2009, 22:32
سلام

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
خوب نمیخواهید یه کنترلر FileUpload هم روی صفحه وبتان قرار دهید؟ کاربر با چی باید فایل را آپلود کند؟


كنترلر FileUpload را گذاشته بودم.فقط نامش متفاوت بود.اصلاً حواسم به اين مورد نبود.
ببخشيد-مرسي:20:

Mahsajoon
16-02-2009, 15:34
Using smallimg As System.Drawing.Image = img.GetThumbnailImage(200, 150, Nothing, Nothing)
smallimg.Save("C:\file.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End Using


سلام.
من ميخوام از اين روش استفاده كنم ولي ميخوام نام عكسهاي ذخيره شده هر بار متفاوت باشه اينجوري عكسها جايگزين ميشن!
آدرس حتماً بايد كامل باشه نميتونم آدرس نسبي بدم.
مرسي

_H2_
16-02-2009, 17:03
سلام
اینکه مسئله مهمی نیست!
شما میتوانید از هر نام دلخواهی استفاده کنید، مسیر را هم به راحتی با Me.MapPath میتوانید به مسیر مطلق تغییر دهید.
(همانطور که اگر دقت کنید در سورس نمونه انجام شده.)