Оптимизация рецидива изображения комплекта необходима для изобразительно важных приложений (каталогов электронной коммерции, галерей, фейд). 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, размер файла тонны против качества с использованием JpegOptions.Quality (типичная сладкая точка: 75–90).
  • Для активов, требующих прозрачности или без убытков, вместо этого используйте PngOptions.
  • Поддерживайте консистентный формат выхода по использованию (например, JPEG для фотографий, PNG для UI активов).

Шаг 5: Неудачи короткого круга; Дайте батарею двигаться

Введите каждый файл в пробный/приемный (как вы сделали) и запишите путь + исключение. Продолжайте обрабатывать оставшийся пакет.

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

Шаг 6: Гигиена

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

Шаг 7: Проверьте результаты с помощью быстрого контроля здоровья

После восстановления:

  • Проверьте ширину/высоту по отношению к своим целям.
  • Подтвердить тип файла / расширение соответствует используемому кодиру.
  • Проверка точки визуального качества для распространенных краевых случаев (панорамы, мелкие иконы, прозрачные ПНГ).

Лучшие практики (Checklist)

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

More in this category