Пакетное сжатие изображений с сохранением качества
Простой и эффективный инструмент для пакетного сжатия PNG/JPG изображений с возможностью настройки качества и ограничения размера файлов.
- 📁 Пакетная обработка - одновременное сжатие множества изображений
- 🎯 Умное сжатие - автоматическая оптимизация качества
- 📏 Ограничение размера - настройка максимального размера файла (например, до 1 МБ)
- 🔄 Изменение размеров - опциональное масштабирование изображений
- 📊 Подробная статистика - отчет об экономии места
- 🎨 Поддержка форматов: JPG, JPEG, PNG, BMP, TIFF, WebP
- 💾 Сохранение структуры - оригинальные названия и метаданные
- Клонируйте репозиторий:
git clone <repository-url>
cd image_compressor- Установите зависимости:
pip install -r requirements.txt- Подготовьте файлы:
Поместите изображения в папку input/
При необходимости измените настройки в config.json
Базовое использование (с конфигурацией по умолчанию):
python compress.pyС параметрами командной строки:
python compress.py --input ./photos --output ./compressed --max-size 0.5 --quality 80С изменением размеров:
python compress.py --resize --width 1200 --height 800Отредактируйте config.json для настройки параметров:
{
"input_folder": "input",
"output_folder": "output",
"max_file_size_mb": 1,
"quality_jpeg": 85,
"quality_png": 85,
"resize_enabled": false,
"max_width": 1920,
"max_height": 1080,
"preserve_metadata": true
}| Параметр | Тип | 🏷️ По умолчанию | 📝 Описание |
|---|---|---|---|
input_folder |
string |
"input" |
📁 Папка с исходными изображениями |
output_folder |
string |
"output" |
📂 Папка для сжатых изображений |
max_file_size_mb |
number |
1 |
📏 Максимальный размер файла в МБ |
quality_jpeg |
number |
85 |
🎨 Качество JPEG сжатия (0-100) |
quality_png |
number |
85 |
🖼️ Качество PNG сжатия (0-100) |
resize_enabled |
boolean |
false |
🔄 Включить изменение размеров |
max_width |
number |
1920 |
📐 Максимальная ширина изображения |
max_height |
number |
1080 |
📏 Максимальная высота изображения |
preserve_metadata |
boolean |
true |
💾 Сохранять метаданные |
| Качество | Диапазон | Рекомендация | Экономия места |
|---|---|---|---|
| 🟢 Высокое | 80-90% | Минимальная потеря качества, подходит для фотографий и важных изображений | 20-40% |
| 🟡 Среднее | 70-80% | Оптимальный баланс между качеством и размером, для веб-сайтов | 40-60% |
| 🟠 Экономное | 60-70% | Заметная потеря качества, но значительное уменьшение размера | 60-75% |
| 🔴 Агрессивное | 40-60% | Сильная потеря качества, только для превью и миниатюр | 75-85% |
| Аргумент | Сокращение | Тип | Описание |
|---|---|---|---|
--input |
-i |
string |
Входная папка с изображениями |
--output |
-o |
string |
Выходная папка для сжатых изображений |
--max-size |
-m |
number |
Максимальный размер файла в МБ |
--quality |
-q |
number |
Качество сжатия (0-100) |
--resize |
flag |
Включить изменение размера | |
--width |
number |
Максимальная ширина | |
--height |
number |
Максимальная высота | |
--config |
-c |
string |
Путь к конфигурационному файлу |
# Базовое использование
python compress.py --input ./photos --output ./compressed --max-size 0.5 --quality 80
# Сокращенная запись
python compress.py -i ./images -o ./optimized -m 1 -q 85 --resize --width 1200
# С кастомным конфигом
python compress.py --config my_config.json
# Только изменение размера
python compress.py --resize --width 800 --height 600 --quality 75
# Максимальное сжатие
python compress.py -i ./input -o ./output -m 0.1 -q 60 --resize --width 400