ساخت thumbnail(تصویر کوچک) از تصاویر در زمان اجرا بدون نیاز به ذخیره

mfiroozi66

عضو جدید
با سلام خدمت دوستان عزیز

بیشتر برنامه نویسان در جهت پیشبرد اهداف خود نیاز به نمایش تصاویر در سایت های خود دارند

و مجبور به ذخیره عکس در دوحالت : اندازه واقعی و اندازه کوچک آن (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>

منبع:ایمان مدائنی
 

Similar threads

بالا