نمایش نتایج 1 تا 2 از 2

نام تاپیک: بهترین روش فشرده سازی تصاویر چیست؟

  1. #1

    بهترین روش فشرده سازی تصاویر چیست؟

    سلام
    من از این روش برای فشرده سازی تصاویر استفاده کردم.
        public static MemoryStream ImageQualityLevel()
    {
    var bitmap = new System.Drawing.Bitmap(@"d:\123.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(encoderTyp e, imageQuality);

    encoderParameters.Param[0] = parameter;
    MemoryStream ms=new MemoryStream();
    bitmap.Save(ms, imageEncoder, encoderParameters);
    bitmap.Dispose();
    return ms;

    }

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

    foreach (var codec in codecs)
    {
    if (codec.FormatID == format.Guid)
    {
    return codec;
    }
    }
    return null;
    }

    یک عکس 3.90 مگا بایتی رو تبدیلش کرد به 3.20 مگا بایت؟؟؟ حتی وقتی 10L هم شد شد2.9 مگا بایت در کل چه روشی وجود داره که عکس 4 مگ بشه 248 کیلو بایت؟
    مثل نرم افزاری که داخل مجموعه آفیس هست و کمپرس تصویرش این کار رو انجا میده.

  2. #2

    نقل قول: بهترین روش فشرده سازی تصاویر چیست؟

    نقل قول نوشته شده توسط mahan206 مشاهده تاپیک
    سلام
    من از این روش برای فشرده سازی تصاویر استفاده کردم.
        public static MemoryStream ImageQualityLevel()
    {
    var bitmap = new System.Drawing.Bitmap(@"d:\123.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(encoderTyp e, imageQuality);

    encoderParameters.Param[0] = parameter;
    MemoryStream ms=new MemoryStream();
    bitmap.Save(ms, imageEncoder, encoderParameters);
    bitmap.Dispose();
    return ms;

    }

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

    foreach (var codec in codecs)
    {
    if (codec.FormatID == format.Guid)
    {
    return codec;
    }
    }
    return null;
    }

    یک عکس 3.90 مگا بایتی رو تبدیلش کرد به 3.20 مگا بایت؟؟؟ حتی وقتی 10L هم شد شد2.9 مگا بایت در کل چه روشی وجود داره که عکس 4 مگ بشه 248 کیلو بایت؟
    مثل نرم افزاری که داخل مجموعه آفیس هست و کمپرس تصویرش این کار رو انجا میده.
    چند تا مساله هست، یکی اینکه انکودر پیشفرض ویندوز و NET. خیلی جالب انگیز ناک نیست. کتابخانه های پردازش تصویر معمولا از این روتین های پیشفرض مایکروسافت بهتر عمل می کنند، هم از نظر سرعت و هم کیفیت و هم حجم و هم پشتیبانی از فرمت ها و تنوع تنظیمات.
    مورد بعدی اینه که در انتخاب فرمت اگه به نوع تصویر و تعداد رنگ و جزئیاتش توجه بشه در نتیجه موثر خواهد بود. مثلا معمولا در تصاویری که تعداد رنگ کمه، فرمت های png و gif بهتر جواب میدن تا jpeg
    یا بخاطر خصوصیات فشرده سازی استفاده شده در jpeg، تصاویری که قدری محو هستند یا رنگ ها در یک طیف خاصی و بهم نزدیک هستند (مثلا طیف سیاه و سفید خاکستری یا متمایل به آبی) بهتر فشرده میشن.
    برای همین فرضا اگه کمی تصویر قبل از ذخیره سازی با فیلتر های Blur و کم کردن Hue کمی و ناچیز دستکاری بشه، jpeg اش بصورت موثری کاهش حجم پیدا می کنه.
    طبعا میشه با کد خالص #C اینکار ها رو انجام داد، ولی با سرعت پایین.
    کتابخانه های تخصصی مثل ImageProcessor و Magick.NET و GraphicsMagick حتی اگه کد خالص #C بکار ببرند، برای افزایش سرعت بهینه شده هستند، معمولا بهتر و سریعتر عمل می کنند و انکودر های قوی تری هم دارند.

تاپیک های مشابه

  1. سوال: پیشرفته ترین الگوریتم های کلاسترینگ برای تصاویر چیست؟
    نوشته شده توسط mnparsian در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 4
    آخرین پست: یک شنبه 02 بهمن 1401, 09:16 صبح
  2. معماری پیاده سازی نظرسنجی در برنامه های اندروید چیست؟
    نوشته شده توسط طبیب دل در بخش Android Studio
    پاسخ: 1
    آخرین پست: پنج شنبه 30 دی 1395, 10:31 صبح
  3. پاسخ: 82
    آخرین پست: دوشنبه 25 آذر 1392, 20:09 عصر
  4. سوال: نحوه ساخت بازی جورجین تصاویر
    نوشته شده توسط mohamad68javad در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 08 اردیبهشت 1391, 17:54 عصر
  5. سوال: جدا سازی تصاویر کاملا مشکی از تصاویر دیگر
    نوشته شده توسط hamidcha در بخش C#‎‎
    پاسخ: 1
    آخرین پست: سه شنبه 16 آذر 1389, 10:34 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •