Оптимизирането на рецидива на изображението е от съществено значение за приложенията с тежки изображения (категории за електронна търговия, галерии, хранилища). Aspose.Imaging за .NET ви позволява да зареждате, пренасочвате и кодирате снимките ефективно, като същевременно поддържате кода си напълно управляван и транс платформиран.

Пълният пример

Стъпка 1: Изберете подходяща стратегия за рециклиране

Изберете стратегия, която отговаря на ограниченията за вашия изход:

  • Ограничителна кутия (препоръчва се за мини): Използвайте FitInto Изображенията са подходящи вътре targetWidth × targetHeight ** без деформация** (съхранява съотношението на аспекта).
  • Абсолютен размер (точни пиксели): Използвайте абсолютен резиз, ако потребителите се нуждаят от фиксирани измерения (може да се наруши, когато съотношението на аспекта се различава).
  • ** Процентно скалиране:** Тънки за единично скалиране от различни размери (например 50% от оригинала).

** Тип:** За мрежите на магазина и социалните карти, FitInto Това обикновено е най-сигурният дефолт.

Стъпка 2: Контрол на паметта и кеширането

Aspose.Imaging поддържа конфигурируемо кеширане, така че големите парчета не прекаляват RAM:

  • Предпочита на диск кашинг за големи работни места (SSD-поддържан маршрут).
  • Поставете папката за кеш и размера на бюджета преди обработката.
// Configure once at startup (example values)
Aspose.Imaging.Cache.CacheType   = Aspose.Imaging.Cache.CacheType.CacheOnDisk;
Aspose.Imaging.Cache.CacheFolder = @"D:\imaging-cache";
Aspose.Imaging.Cache.CacheSize   = 1L * 1024 * 1024 * 1024; // 1 GB

Също така:

  • На разположение на всеки Image Веднага щом се спаси.
  • Избягвайте да държите много декодирани изображения живи едновременно – процес на файл.

Стъпка 3: Паралелно безопасно

Използване Parallel.ForEach (Както е в ГИСТ), но тонирайте го:

  • сет MaxDegreeOfParallelism до чувствителна стойност за вашата кутия (CPU корени, I/O скорост, паметта).
  • Всяка задача трябва да работи на своя ** Image Не споделяйте изображения на обекти между нишки.
  • Дръжте опциите за кодиране непроменени, за да избегнете спорове.

Пътеводител: Започнете с MaxDegreeOfParallelism = Environment.ProcessorCount Адаптиране след профилиране.

Стъпка 4: Изберете кодове и качество умишлено

  • За изходите от JPEG, размерът на файла за тон vs. качество с помощта на JpegOptions.Quality (типична сладка точка: 75–90).
  • За активи, които изискват прозрачност или без загуби, използвайте PngOptions вместо това.
  • Поддържайте изходния формат последователен по случай на употреба (например JPEG за снимки, PNG за UI активи).

Стъпка 5: Неуспехи на краткия кръг; Дръжте батерията в движение

Вградете всеки файл в опит/привличане (както сте го направили) и регистрирайте маршрута + изключението.

  • Скипване на файлове, които не са изображения (филтриране разширения напред).
  • Регистриране на оригинални и изходни размери, за да се валидират спестяванията.
  • Напишете неуспехи в CSV за повторни състезания.

Стъпка 6: I/O хигиена

  • Уверете се, че директорията за изход съществува и е на бърз диск (SSD).
  • Избягвайте да пишете изход над входа; пишете в отделен каталог.
  • Ако имате милиони файлове, разделите изходите си в подкопители, за да запазите списъците с директории бързо.

Стъпка 7: Проверете резултатите с бърз здравен преглед

След възстановяване:

  • Валидирайте ширината / височината срещу целите си.
  • Потвърдете типа на файла / разширението съответства на използвания кодирач.
  • Spot-check визуално качество за общи крайни случаи (панорами, малки икони, прозрачни PNG).

Най-добрите практики (Checklist)

    • Закриване: * Настройка CacheType, CacheFolderИ една разумна CacheSize.
  • Паралелизъм: Използване Parallel.ForEach с тунел MaxDegreeOfParallelismНе споделяме Image в случаите.
    • На разположение: * Винаги разполага Image Бързо да.
    • Кодиране: * Използване JpegOptions.Quality за JPEG; преминаване към PngOptions за безкрайност / алфа.
  • I/O: Отделни корени за вход/изход; предварително създадени директории.
  • Филтриране: Ограничете до известни разширения на изображения преди зареждане.
  • Logging: Записване на грешки и основни метрики (сметка, MB в/изход).
  • Актуализации: Дръжте Aspose.Imaging up-to-date за текущи подобрения на производителността.

More in this category