کاهش حجم تصویر در C#.NET

برای این منظور از کلاس System.Drawing.Imaging.ImageCodecInfo بهره می گیریم و متدهای زیر را به پروژه خوداضافه کرده و از آنها استفاده می نماییم. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        public static void ImageQualityLevel()
        { 
            var bitmap = new System.Drawing.Bitmap(@"C:\TestPhoto.bmp");
            var imageEncoder = GetEncoder(System.Drawing.Imaging.ImageFormat.Jpeg);
            var encoderType = System.Drawing.Imaging.Encoder.Quality;
            var encoderParameters = new System.Drawing.Imaging.EncoderParameters(1);
            var imageQuality = 50L;
            var parameter = new System.Drawing.Imaging.EncoderParameter(encoderType, imageQuality);

            encoderParameters.Param[0] = parameter;
            bitmap.Save(@"C:\TestPhotoQualityFifty.bmp", imageEncoder, encoderParameters);
            bitmap.Dispose();
        }

        private static System.Drawing.Imaging.ImageCodecInfo GetEncoder(System.Drawing.Imaging.ImageFormat format)
        {
            var codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageDecoders();

            foreach (var codec in codecs)
            {
                if (codec.FormatID == format.Guid)
                {
                    return codec;
                }
            }
            return null;
        }
حالا کافیست مسیر فایل اصلی را مشخص کرده و از طریق متغیر imageQuality میزان کیفیت تصویر ایجاد شده نسبت به تصویر اصلی را مشخص کنیم. این مقدار باید بین 0 تا 100 باشد.

همچنین برای کاهش حجم تصویر می توان از Encoderهای مختلفی مثل Bmp، Gif، Png، Tiff و Jpeg استفاده کرد. اما بهترین فشرده سازی معمولا توسط Jpeg صورت می گیرد و ما هم در متد ImageQualityLevel از این Encoder استفاده کرده ایم. در نهایت فایل تصویر فشرده سازی شده را در محل دلخواه و با فرمت مدنظر ذخیره می نماییم.

برای دریافت اطلاعات بیشتر می توانید به وب سایت مایکروسافت مراجعه نمایید.


آخرین بروزرسانی
۱۶ اسفند ۱۴۰۲ 
تعداد کلیک
۴,۷۱۱

فهرست نظرها و ارسال نظر جدید

نام را وارد کنید
ایمیل را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید