Зменшення розміру зображень (стиснення без значної втрати якості) можна виконати за допомогою командного рядка Linux. Найпоширеніші інструменти — це ImageMagick (універсальний), jpegoptim (для JPEG), optipng (для PNG) та pngcrush (для PNG). Вони працюють без GUI і ефективно зменшують розмір файлів.
Крок 1: Встановлення інструментів
Встановіть пакети залежно від дистрибутива (наприклад, Ubuntu/Debian):
sudo apt update
sudo apt install imagemagick jpegoptim optipng pngcrush
Для Fedora/RHEL:
sudo dnf install ImageMagick jpegoptim optipng pngcrush
Для Arch:
sudo pacman -S imagemagick jpegoptim optipng pngcrush
Крок 2: Основні команди для стиснення
Ось приклади для різних форматів. Замініть image.jpg на шлях до вашого файлу. Команди створюють нові файли (щоб не перезаписувати оригінали); для перезапису додайте -o або -overwrite.
| Формат | Інструмент | Команда | Опис | Очікуване зменшення |
|---|---|---|---|---|
| JPEG | jpegoptim | jpegoptim --max=80 image.jpg | Стискає з якістю 80% (баланс розмір/якість). --strip-all видаляє метадані. | 20–50% |
| JPEG | ImageMagick (convert) | convert image.jpg -quality 80 optimized.jpg | Змінює якість; додайте -strip для видалення метаданих. | 30–60% |
| PNG | optipng | optipng -o7 image.png | Оптимізація рівня 7 (максимум); без втрат. | 10–40% |
| PNG | pngcrush | pngcrush -rem alla -reduce -brute image.png | Брутфорс-оптимізація; -rem alla видаляє метадані. | 20–50% |
| Універсальний (JPEG/PNG/GIF) | ImageMagick (mogrify) | mogrify -quality 80 -strip *.jpg | Обробляє всі JPEG у папці; mogrify перезаписує файли (обережно!). | Залежить від формату |
- Пояснення параметрів:
--max=80або-quality 80: Якість 80% (від 0 до 100; нижче — менший розмір, але гірша якість).-o7: Рівень оптимізації (1–7; вищий — повільніший, але кращий).-strip: Видаляє EXIF, коментарі тощо, що заощаджує 5–20% розміру.
Крок 3: Обробка кількох файлів
- Усі JPEG у папці:
jpegoptim --batch --max=80 *.jpg - Усі PNG:
optipng -o7 *.png - Рекурсивно (включаючи підпапки):
find . -name "*.jpg" -exec jpegoptim --max=80 {} \;
Крок 4: Перевірка результату
ls -lh *.jpg # Показує розмір файлів у людському форматі
Приклад: Оригінал 2MB → після стиснення 800KB.
Поради
- Без втрат: Для JPEG використовуйте
jpegoptimз--strip-only(тільки метадані). Для PNG —optipngабоpngcrushзавжди без втрат. - Масштабування: Якщо потрібно зменшити роздільну здатність (наприклад, вдвічі):
convert image.jpg -resize 50% -quality 80 thumb.jpg. - Обмеження: ImageMagick може бути повільним для великих файлів; jpegoptim швидший для JPEG.
- Якщо файли в ZIP/RAR: Розпакуйте спочатку, стисніть зображення, запакуйте заново з
zip -9 archive.zip.
Ці методи працюють на будь-якій сучасній Linux (включно з 2025 роком).
Скрипт для оптимізації зображень у каталогах
Ось простий скрипт на Bash, який читає список каталогів з файлу (наприклад, directories.txt), знаходить у них файли зображень (JPEG, PNG, GIF) і оптимізує їх за допомогою інструментів jpegoptim, optipng та convert з ImageMagick. Скрипт створює резервні копії оригіналів у підпапці backup кожного каталогу, щоб уникнути втрат.
Передумови
- Встановіть інструменти:
sudo apt install jpegoptim optipng imagemagick(для Ubuntu). - Створіть файл
directories.txtз переліком шляхів до каталогів, по одному на рядок (наприклад,/path/to/dir1\n/path/to/dir2). - Запустіть скрипт:
./optimize_images.sh directories.txt(зробіть його виконуваним:chmod +x optimize_images.sh).
Скрипт: optimize_images.sh
#!/bin/bash
# Перевірка аргументів
if [ $# -ne 1 ]; then
echo "Використання: $0 <файл_зі_списком_каталогів>"
exit 1
fi
LIST_FILE="$1"
# Перевірка існування файлу списку
if [ ! -f "$LIST_FILE" ]; then
echo "Файл $LIST_FILE не існує!"
exit 1
fi
# Функція для оптимізації зображення
optimize_image() {
local file="$1"
local ext="${file##*.}"
local backup_dir="$(dirname "$file")/backup"
mkdir -p "$backup_dir"
cp "$file" "$backup_dir/" # Резервна копія
case "$ext" in
jpg|jpeg|JPG|JPEG)
jpegoptim --max=80 --strip-all "$file"
;;
png|PNG)
optipng -o7 -strip all "$file"
;;
gif|GIF)
convert "$file" -strip -quality 80 "$file"
;;
*)
echo "Непідтримуваний формат: $file"
;;
esac
}
# Читання списку каталогів і обробка
while IFS= read -r dir; do
if [ -d "$dir" ]; then
echo "Обробка каталогу: $dir"
find "$dir" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" \) | while read -r image; do
optimize_image "$image"
echo "Оптимізовано: $image"
done
else
echo "Каталог $dir не існує!"
fi
done < "$LIST_FILE"
echo "Оптимізація завершена!"
Як це працює
- Читання списку: Скрипт читає файл з шляхами до каталогів.
- Пошук зображень: Використовує
findдля пошуку файлів з розширеннями .jpg, .jpeg, .png, .gif (рекурсивно). - Оптимізація:
- JPEG: Зменшує до 80% якості, видаляє метадані.
- PNG: Безвтратна оптимізація максимального рівня.
- GIF: Зменшує якість до 80% за допомогою ImageMagick.
- Резервні копії: Копіює оригінали в
backupпідпапку. - Логи: Виводить прогрес у консоль.
Приклад використання
- Файл
directories.txt:
/home/user/images/dir1
/home/user/images/dir2
- Запуск:
./optimize_images.sh directories.txt
Mikrotik Packet sniffer Налаштування хоста для отримання трафіку. /tool snifferset filter-interface=eth1 streaming-enabled=yes streaming-server=192.168.226.250:25010 При необхідності можна налаштувати фільтри трафіку Для отримання трафіку на Linux можна . . .
Встановлюємо англійську розкладку клавіатури (пізніше додамо інші). Коли дійдемо до моменту підключення до Wi-Fi, натискаємо Shift + F10 Вводимо в командному рядку (cmd): oobe\bypassnro Перезавантажуємося . . .