Что нового

Платно Dle Image Resizer

KINETOON

Посетитель
Регистрация
11 Янв 2022
Сообщения
12
Реакции
3
Image Resizer — это мощный инструмент для работы с изображениями, включающий их изменение размеров (resize), сжатие и управление кешем. Этот модуль разработан для администраторов сайтов позволяя оптимизировать изображения для веб-сайта без потери качества, сохраняя минимальный размер файлов.

Основные возможности

1. Изменение размеров изображений​

  • Поддержка изменения ширины и высоты изображений с сохранением пропорций.
  • Возможность указания разрешённых размеров через файл allowed_sizes.txt.
  • Если файл пуст, допускаются любые размеры.

2. Сжатие изображений​

  • Использует библиотеку Imagick для высококачественной обработки.
  • Возможность настройки уровня качества сжатия (от 1 до 100).
  • Поддержка глубины цвета (8-bit, 24-bit и другие).
  • Выбор фильтров ресайза (например, LANCZOS, BOX, TRIANGLE).

3. Поддержка форматов​

  • Автоматическое определение форматов изображений: JPEG, PNG, GIF, WebP.
  • Удаление ненужных метаданных для оптимизации размера изображений.

4. Управление кешем​

  • Обработанные изображения сохраняются в кеше для ускорения повторного доступа.
  • Возможность очистки кеша через административную панель.
  • Информация о размере кеша и количестве хранимых файлов.

5. Безопасность​

  1. Строгая проверка доступа: модуль работает только на разрешённом домене.
  2. Исключение обработки внешних URL.
  3. Защита POST-запросов с использованием CSRF-токенов.
  4. Проверка наличия и соответствия файлов корневой директории сайта.

Панель администратора

Модуль оснащён удобной административной панелью с двумя вкладками:

1. Настройки кеша

  • Поле для указания разрешённых размеров изображений (например, 100x100 или 100).
  • Информация о текущем размере кеша и количестве файлов.
  • Возможность очистки кеша одним кликом.

2. Настройки сжатия

  • Поля для ввода уровня качества сжатия и глубины цвета.
  • Выбор фильтра для ресайза изображений (LANCZOS, BOX, TRIANGLE).
  • Настройки сохраняются без редактирования файлов вручную.

Обработка запросов

Пользователь отправляет запрос с параметрами (ширина, высота, путь к изображению). Модуль проверяет параметры, применяет ограничения, заданные в конфигурации, и возвращает обработанное изображение.

Создание кешированных изображений

  • Если запрашиваемое изображение уже существует в кеше, оно возвращается напрямую.
  • Если изображения нет в кеше, модуль обрабатывает оригинал, изменяет его и сохраняет в кеше.

Управление через административную панель

Администраторы могут:
  • Изменять настройки сжатия и разрешённых размеров
  • Очищать кеш для освобождения места.

Пример использования

HTML:
https://site.com/resize.php?file=/images/sample.jpg&w=300&h=200
  • file — путь к изображению.
  • w — ширина нового изображения.
  • h — высота нового изображения.

Пример конфигурационного файла

JavaScript:
{
  "filter": "Imagick::FILTER_LANCZOS",
  "quality": 85,
  "depth": 24
}
  • filter — фильтр ресайза изображения (LANCZOS, BOX, TRIANGLE).
  • quality — уровень качества изображения (например, 85).
  • depth — глубина цвета (например, 24).

Преимущества модуля

  1. Скорость загрузки сайта — оптимизированные изображения уменьшают время загрузки страниц.
  2. Простота настройки — все параметры доступны через административную панель.
  3. Гибкость — поддержка различных форматов и настроек позволяет адаптировать модуль под любые требования.
  4. Безопасность — строгая защита от несанкционированного доступа.
Этот модуль станет незаменимым инструментом для повышения производительности вашего сайта!

Процесс кеширования изображений

  1. Проверка входных параметров
    • Код проверяет входные параметры outputDir, file, w (ширина) и h (высота).
    • Убеждается, что запрашиваемый файл принадлежит домену "yourdomain.com" и существует на файловой системе сервера.
  2. Проверка выходной директории
    • Проверяется наличие директории cache (или той, что указана в outputDir).
    • Если директория отсутствует, она создаётся с правами 0755.
  3. Проверка допустимых размеров
    • Код считывает файл allowed_sizes.txt для проверки разрешённых размеров.
    • Если запрошенные размеры не входят в список допустимых, возвращается сообщение об ошибке.
  4. Формирование имени кеш-файла
    • Имя кеш-файла формируется по следующей схеме
      PHP:
      {$outputDir}/{$width}x{$height}_{$encodedPath}
      где:
      • $width и $height — запрашиваемые размеры изображения,
      • $encodedPath — имя файла, закодированное с помощью md5.
      Например, если запрашивается файл image.jpg, он может быть закеширован как:
      Код:
      cache/300x200_d41d8cd98f00b204e9800998ecf8427e.webp
  5. Блокировка файла (locking)
    • Для предотвращения конфликтов при одновременной обработке одного и того же файла используется система блокировки.
  6. Сохранение в кеше
    • Если файл уже существует в директории cache, он немедленно загружается и возвращается.
    • Если файла нет, он обрабатывается (для создания новых размеров), кешируется и затем возвращается клиенту.

Формат изображений и качество хранения

  1. Предварительная обработка с использованием библиотеки Imagick
    • Изображение обрабатывается библиотекой Imagick.
    • Если указана только ширина или высота, второй параметр вычисляется пропорционально (с сохранением aspect ratio).
  2. Изменение размеров
    • Для изменения размеров используется метод resizeImage.
    • Параметры фильтрации и качества задаются в файле config.json, включая:
      • Тип фильтра (например, FILTER_LANCZOS),
      • Качество сжатия (quality),
      • Глубину цвета (depth).
  3. Формат хранения: WebP
    • Все изображения сохраняются в формате WebP (setImageFormat('webp')), который обеспечивает высокое качество при небольшом размере файла.
    • WebP подходит как для фотографий, так и для графики.
  4. Удаление метаданных
    • Метод stripImage удаляет лишние метаданные (например, EXIF или другую информацию), что уменьшает размер файла.
  5. На выходе
    • Обработанный файл записывается в директорию cache.
    • MIME-тип файла устанавливается, чтобы браузер корректно отображал изображение.

Итог

Основные этапы кеширования и хранения изображений:
  1. Анализ и проверка входных параметров.
  2. Проверка, существует ли файл в кеше.
  3. Если файла нет, он обрабатывается: изменяются размеры, качество и формат (WebP).
  4. Закешированный файл сохраняется в выходной директории с именем, закодированным через md5.
  5. При следующем запросе того же файла он загружается напрямую из кеша.
Такой подход значительно ускоряет доставку изображений и снижает нагрузку на сервер.

Модуль стоит всего 50 долларов, и его использование не привязано к какому-либо конкретному домену.
По всем вопросам пишите в Telegram:
t.me/snh001
 

Вложения

  • 01.png
    01.png
    22.9 КБ · Просмотры: 7
  • 002.png
    002.png
    15.3 КБ · Просмотры: 7
  • 003.png
    003.png
    12.8 КБ · Просмотры: 7
Последнее редактирование:
Верх