У вас є 500 PNG-скриншотів для конвертації в WebP. FFmpeg відомий насамперед як відеоінструмент, але з зображеннями він справляється не гірше — і оскільки працює з командного рядка, однією командою обробляє будь-яку кількість файлів.
Чому FFmpeg для зображень?
FFmpeg, ймовірно, вже встановлений, якщо ви працюєте з відео. Для RAW-форматів (CR2, NEF, ARW) використовуйте darktable або RawTherapee.
Встановлення FFmpeg
# macOS
brew install ffmpeg
# Ubuntu / Debian
sudo apt install ffmpeg
# Windows (Chocolatey)
choco install ffmpegffmpeg -versionБазова структура команди
Кожна команда пакетної конвертації має однакову структуру: цикл оболонки (Linux/macOS) або цикл for (Windows). Завжди записуйте результат в окрему директорію.
Пакетна конвертація PNG у JPG
mkdir -p output
for f in *.png; do
ffmpeg -i "$f" -q:v 2 "output/${f%.png}.jpg"
donemkdir output
for %f in (*.png) do ffmpeg -i "%f" -q:v 2 "output/%~nf.jpg"New-Item -ItemType Directory -Force output
Get-ChildItem *.png | ForEach-Object {
ffmpeg -i $_.FullName -q:v 2 "output/$($_.BaseName).jpg"
}| -q:v | Якість | Типове використання |
|---|---|---|
| 1-2 | Майже без втрат | Друк, архівування |
| 3-5 | Висока якість | Веб-фотографія |
| 6-10 | Середня якість | Попередній перегляд |
| 11+ | Низька якість | Уникати |
Пакетна конвертація JPG у WebP
mkdir -p output
for f in *.jpg *.jpeg; do
[ -f "$f" ] || continue
ffmpeg -i "$f" -quality 85 "output/${f%.*}.webp"
donemkdir -p output
for f in *.png; do
ffmpeg -i "$f" -lossless 1 "output/${f%.png}.webp"
doneWebP зазвичай дає файли на 25–35 % менші за еквівалентний JPG. Для фотографій оптимальний діапазон 80–85.
Конвертація в PNG
mkdir -p output
for f in *.jpg *.jpeg; do
[ -f "$f" ] || continue
ffmpeg -i "$f" "output/${f%.*}.png"
doneКонвертація змішаних форматів
mkdir -p output
for f in *.jpg *.jpeg *.png *.webp *.tiff *.bmp; do
[ -f "$f" ] || continue
ffmpeg -i "$f" -q:v 3 "output/${f%.*}.jpg"
doneЗміна розміру разом із конвертацією
mkdir -p output
for f in *.png; do
ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 "output/${f%.png}.jpg"
donemkdir -p output
for f in *.jpg; do
ffmpeg -i "$f" -vf "crop='min(iw,ih)':'min(iw,ih)',scale=200:200" \
"output/${f%.jpg}_thumb.jpg"
doneРекурсивна обробка піддиректорій
find . -name "*.png" -not -path "./output*" | while read f; do
output="output/${f#./}"
mkdir -p "$(dirname "$output")"
ffmpeg -i "$f" -q:v 3 "${output%.png}.jpg"
doneПаралельна обробка для прискорення
mkdir -p output
ls *.png | xargs -P 4 -I {} sh -c 'ffmpeg -i "$1" -q:v 3 "output/${1%.png}.jpg"' _ {}На 8-ядерному комп'ютері з SSD паралельна обробка зазвичай скорочує час конвертації у 3–5 разів.
Індикатор прогресу
total=$(ls *.png | wc -l)
count=0
mkdir -p output
for f in *.png; do
count=$((count + 1))
echo "[$count/$total] $f"
ffmpeg -loglevel quiet -i "$f" -q:v 3 "output/${f%.png}.jpg"
doneОбробка помилок
mkdir -p output
error_log="errors.txt"
> "$error_log"
for f in *.jpg *.jpeg *.png *.webp; do
[ -f "$f" ] || continue
if ffmpeg -loglevel error -i "$f" -quality 85 "output/${f%.*}.webp" 2>>"$error_log"; then
echo "✓ $f"
else
echo "✗ $f"
fi
doneДовідник команд
| Конвертація | Команда (Linux/macOS) | Примітка |
|---|---|---|
| Усі PNG → JPG | for f in *.png | do ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg |
| Усі JPG → WebP | for f in *.jpg | do ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp |
| Усі JPG → PNG | for f in *.jpg | do ffmpeg -i "$f" output/${f%.jpg}.png |
| Усі → WebP без втрат | for f in *.png | do ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp |
| Зміна розміру + конвертація | for f in *.jpg | do ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg |
Коли FFmpeg — не найкращий інструмент
RAW-формати камери — обмежена підтримка. Використовуйте darktable або RawTherapee.
Кодування AVIF — можливе, але дуже повільне без апаратного прискорення.
Лише кілька файлів? FastConvert швидше — без встановлення.
Поширені запитання
Підсумок
Пакетна конвертація зображень через FFmpeg будується на простому циклі. Завжди тестуйте на невеликому пакеті перед обробкою всієї бібліотеки.
Потрібно конвертувати зображення без командного рядка? FastConvert — безкоштовно, без реєстрації.
