ایمان مدائنی
شنبه 11 آذر 1391, 14:02 عصر
با سلام خدمت دوستان عزیز
بیشتر برنامه نویسان در جهت پیشبرد اهداف خود نیاز به نمایش تصاویر در سایت های خود دارند
و مجبور به ذخیره عکس در دوحالت : اندازه واقعی و اندازه کوچک آن (thumb یا همان تصاویر بند انگشتی) هستند
برای مثال فروشگاه ها یا گالری تصاویر
که باید تصاویر در حالت کوچک نمایش داده شوند و در صورت کلیک کاربر روی عکس اندازه واقعی آن نمایش داده شود
حالا مسئله اینه که باید حافظه زیادی صرف ذخیره عکس در دوحالت مصرف شود
و مسئله بعدی ذخیره عکس به دو صورت است که پس از دریافت عکس می بایست این عکس اول به اندازه واقعی ذخیره میشد و سپس با استفاده از متد ها یا کلاس های خاصی که از فضای نام system.drawing استفاده میکردند به اندازه کوچک تبدیل و دوباره ذخیره میشد
با استفاده از این روش بالا زمان زیادی سرور صرف پردازش اطلاعات میکرد
حالا من میخوام بهتون روشی یاد بدم که نیازی به ذخیره عکس به اندازه کوچک نباشد و تصویر کوچک در زمان اجرا ساخته شده و پس بسته شدن مرورگر تسوط کاربر از بین میرود
در این روش از generic handler یا همان .ashx استفاده میکنیم
ashx چیست ؟
ashx ها هندلرهایی برای پردازش درخواست ها و در صورت نیاز برگشت نتیجه هستند.
یک فایل Ashx یا یک Generic Http Handler یک صفحه است که واسط IHttpHandler را Implement کرده است
این فایل قادر است درخواست هایی (Request) که به صورت Http به این صفحه ارسال می شود را کنترل کرده و پاسخ (Response) دهد
مثلا برای کوچک نمایی تصاویر ، ساخت تصاویر امنیتی ، پاسخ های XHR و... کاربرد دارد .
نحوه تولید تصاویر امنیتی تفاوتی نمی کند تنها نکته ای که باید بدانید این است که تصویر در نهایت به صورت Stream پاسخ داده می شود
در این پروژه استفاده خواهیم کرد
من یک نمونه براتون ضمیمه کردم که با مشاهده آن خیلی راحت ساخت تصاویر thumb در زمان اجرا را یاد خواهید گرفت
در این نمونه اندازه تصویر thumb توسط شما تعیین میگردد چ
imgThumb.ImageUrl = string.Format("~/Image/aish.jpg.ashx?w={0}&h={1}", txtWidth.Text.Trim(),
txtHeight.Text.Trim());
که از دو textbox در صفحه مقدار دهی میشوند
و کلاسی گه در پروزه دوم solution به نام Xpertz.Base قرار دارد از IHttpHandler ارث بری کرده است
public class Images : IHttpHandler
فقط دقت کنید در web.config باید مقداری تغییر ایجاد کنید
<httphandlers>
<add verb="*" path="*.jpg.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.jpeg.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.png.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.gif.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.bmp.ashx" type="Xpertz.Base.Handler.Images"></add>
</httphandlers>
نمونه برنامه ضمیمه می باشد
موفق و پیروز باشید
بیشتر برنامه نویسان در جهت پیشبرد اهداف خود نیاز به نمایش تصاویر در سایت های خود دارند
و مجبور به ذخیره عکس در دوحالت : اندازه واقعی و اندازه کوچک آن (thumb یا همان تصاویر بند انگشتی) هستند
برای مثال فروشگاه ها یا گالری تصاویر
که باید تصاویر در حالت کوچک نمایش داده شوند و در صورت کلیک کاربر روی عکس اندازه واقعی آن نمایش داده شود
حالا مسئله اینه که باید حافظه زیادی صرف ذخیره عکس در دوحالت مصرف شود
و مسئله بعدی ذخیره عکس به دو صورت است که پس از دریافت عکس می بایست این عکس اول به اندازه واقعی ذخیره میشد و سپس با استفاده از متد ها یا کلاس های خاصی که از فضای نام system.drawing استفاده میکردند به اندازه کوچک تبدیل و دوباره ذخیره میشد
با استفاده از این روش بالا زمان زیادی سرور صرف پردازش اطلاعات میکرد
حالا من میخوام بهتون روشی یاد بدم که نیازی به ذخیره عکس به اندازه کوچک نباشد و تصویر کوچک در زمان اجرا ساخته شده و پس بسته شدن مرورگر تسوط کاربر از بین میرود
در این روش از generic handler یا همان .ashx استفاده میکنیم
ashx چیست ؟
ashx ها هندلرهایی برای پردازش درخواست ها و در صورت نیاز برگشت نتیجه هستند.
یک فایل Ashx یا یک Generic Http Handler یک صفحه است که واسط IHttpHandler را Implement کرده است
این فایل قادر است درخواست هایی (Request) که به صورت Http به این صفحه ارسال می شود را کنترل کرده و پاسخ (Response) دهد
مثلا برای کوچک نمایی تصاویر ، ساخت تصاویر امنیتی ، پاسخ های XHR و... کاربرد دارد .
نحوه تولید تصاویر امنیتی تفاوتی نمی کند تنها نکته ای که باید بدانید این است که تصویر در نهایت به صورت Stream پاسخ داده می شود
در این پروژه استفاده خواهیم کرد
من یک نمونه براتون ضمیمه کردم که با مشاهده آن خیلی راحت ساخت تصاویر thumb در زمان اجرا را یاد خواهید گرفت
در این نمونه اندازه تصویر thumb توسط شما تعیین میگردد چ
imgThumb.ImageUrl = string.Format("~/Image/aish.jpg.ashx?w={0}&h={1}", txtWidth.Text.Trim(),
txtHeight.Text.Trim());
که از دو textbox در صفحه مقدار دهی میشوند
و کلاسی گه در پروزه دوم solution به نام Xpertz.Base قرار دارد از IHttpHandler ارث بری کرده است
public class Images : IHttpHandler
فقط دقت کنید در web.config باید مقداری تغییر ایجاد کنید
<httphandlers>
<add verb="*" path="*.jpg.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.jpeg.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.png.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.gif.ashx" type="Xpertz.Base.Handler.Images"></add>
<add verb="*" path="*.bmp.ashx" type="Xpertz.Base.Handler.Images"></add>
</httphandlers>
نمونه برنامه ضمیمه می باشد
موفق و پیروز باشید