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

در روش قبلی حجم تصاویر بند انگشتی (حدودا سایز 150 در 150) نزدیک به 30 کیلوبایت میشد ، حال می خواهیم این حجم را بدون افت کیفیت به حدود 5 الی 8 کیلوبایت برسانیم !

برای این کار می بایست تابعی بنویسیم که کار زیر را انجام دهد:

  1. ریسایز تصویر
  2. تغییر فرمت تصاویر به jpeg
  3. تغییر فرمت رنگ تصاویر به RGB
  4. تغییر رزولیشن تصویر
مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه

برای این کار کافی است به کمک امکانات GDI+ سی شارپ بصورت زیر عمل نماییم:

1- ابتدا می بایست طول و عرض جدید تصویرمان را محاسبه نماییم ، طوری که Scale تصویر (نسبت طول به عرضش) به هم نریزد.

2- سپس یک instance از کلاس Bitmap در اندازه های محاسبه شده در مرحله اول و با فرمت رنگی RGB می سازیم و به کمک کلاس Graphics تصویرمان را با کیفیت بالا روی آن ترسیم می نماییم (Draw)

(تصاویر CMYK به درد چاپ می خورند و دارای حجم رنگی بالایی نسبت به تصاویر RGB هستند.)

3- تصویر ساخته شده در مرحله 2 را با فرمت JPEG و با کیفیت مورد نظرمان در مسیر دلخواهمان (روی هارد) ذخیره می نماییم.

اگر مقاله قبلی من ( آموزش تغییر اندازه (سایز) تصاویر در  asp.net ) را خوانده باشید ، دیدید که تابعمان را نتوانستیم بصورت DLL در بیاوریم ، در اینجا برای اینکه بتوانیم کل کدهایمان را بصورت یک کلاس مجزا در بیاوریم و در هر یک از بخش های سایت به راحتی بتوانی از آن استفاده نماییم ، بنده یک ورودی از نوع استریم گرفته ام که در ادامه طریقه کارکرد آن را توضیح خواهم داد.

کد پایانی بصورت زیر می باشد:


ابتدا باید کتابخانه های زیر را درون فایل کلاس داشته باشیم (همه کتابخونه ها رو حذف و فقط همینا رو اضافه کنین)

سپس باید بصورت زیر عمل نماییم:


بعنوان مثال برای استفاده از کتابخانه دست سازمون می بایست بصورت زیر عمل نماییم:

ابتدا کتابخانه رو به صفحمون اضافه می کنیم :

سپس داریم :


دقت کنین که من در اینحا اسم عکسمو یه چیز ثابت گذاشتم ، در عمل باید شما این اسم رو بصورت رندوم  و یونیک تولید کنین ، بطوری که هیچوقت اسم 2 تا فایل تصویریتون مثل هم نشه (همانطور که می دونین اگر یک فایل رو با نام مشابه یک فایل دیگه ذخیره کنین ، روی فایل قبلی ذخیره میشه و فایل قبلیتون از بین میره!)

خوب مسلما در پایان اگر مقدار متغیر flag1 برابر با مقدار true باشه یعنی تصویر با موفقیت ذخیره شده و د ر غیر اینصورت یعنی مشکلی در عملیات ذخیره سازی تصویر رخ داده که در اغلب موارد خروجی false به این دلیله که مسیری که دارین تصویر رو توش ذخیره میکنین دسترسی write نداره.

مقالات آموزشی دانشجویی برنامه نویسی و الکترونیک و شبکه


امیدوارم که از این کد و آموزش استفاده کنین و حالشو ببرین و سایت نت نیک یا آموزش رو هم از یاد نبرین
در روزهای آتی چند تا آموزش بهتر تر و خفن تر تر روی سایت قرار خواهم داد.
پس اگر برنامه نویس هستین و دنبال یاد گرفتن کد ها و تکنیک های جدید برنامه نویسی بخصصوی asp.net هستین
بهتره مرتب به ما سر بزنین :)
یا توی RSS سایت مشترک بشین ، اینطوری بدون نیاز به وارد شدن به سایت ، خیلی راحت می تونین برین توی منوی Bookmark مرورگرتون و خیلی راحت لیست آخرین مطالب سایت بنده رو ببینین و روی هر کدوم که خواستین کلیک کنین و مستقیم برین و مطلب مورد نظرتونو بخونین

سوالات خودتونو می تونین توی بخش نظرات بپرسین و جوابشو هم 5 تا 24 ساعت بعد همونجا بخونین.

یا حق

موفق باشید


نوشته شده در تاریخ چهارشنبه 22 مرداد 1393    | توسط: ح.م    | طبقه بندی: آموزش ASP.NET، آموزش سی شارپ،     | نظرات()