Je hebt 500 PNG-schermafbeeldingen die voor je website naar WebP moeten worden geconverteerd. Of een map met TIFF-exports uit Lightroom die JPG moeten worden. FFmpeg is vooral bekend als videotool, maar verwerkt afbeeldingen net zo goed — en omdat het via de opdrachtregel werkt, verwerkt het elke gewenste hoeveelheid bestanden met één opdracht.
Waarom FFmpeg voor afbeeldingen?
FFmpeg is waarschijnlijk al geïnstalleerd als je videowerk doet. Het ondersteunt een breed scala aan formaten en integreert van nature in shellscripts en CI-pipelines. Voor RAW-cameraformaten (CR2, NEF, ARW) gebruik je darktable of RawTherapee — FFmpegs RAW-ondersteuning is beperkt.
FFmpeg installeren
# macOS
brew install ffmpeg
# Ubuntu / Debian
sudo apt install ffmpeg
# Windows (Chocolatey)
choco install ffmpegffmpeg -versionHet basispatroon
Elke opdracht voor bulkconversie volgt hetzelfde patroon: een shell-lus (Linux/macOS) of een for-lus (Windows). Basisregel: nooit bronbestanden overschrijven — altijd naar een aparte uitvoermap schrijven.
Alle PNG naar JPG converteren
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 | Kwaliteit | Typisch gebruik |
|---|---|---|
| 1–2 | Bijna verliesvrij | Drukken, archiveren |
| 3–5 | Hoge kwaliteit | Webfotografie |
| 6–10 | Gemiddelde kwaliteit | Voorbeelden, miniaturen |
| 11+ | Lage kwaliteit | Vermijden |
Alle JPG naar WebP converteren
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 levert bestanden op die doorgaans 25–35 % kleiner zijn dan equivalente JPG. Voor foto's is kwaliteit 80–85 het optimale bereik. Voor logo's en afbeeldingen met tekst gebruik je lossless WebP.
Naar PNG converteren
mkdir -p output
for f in *.jpg *.jpeg; do
[ -f "$f" ] || continue
ffmpeg -i "$f" "output/${f%.*}.png"
doneGemengde formaten converteren
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"
doneFormaat wijzigen en tegelijk converteren
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"
doneRecursief verwerken van submappen
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"
doneParallelle verwerking voor meer snelheid
mkdir -p output
ls *.png | xargs -P 4 -I {} sh -c 'ffmpeg -i "$1" -q:v 3 "output/${1%.png}.jpg"' _ {}Op een machine met 8 cores en SSD-opslag verkort parallelle verwerking de conversietijd doorgaans met een factor 3 tot 5.
Voortgangsindicator
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"
doneFoutafhandeling
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
doneOpdrachtenoverzicht
| Conversie | Opdracht (Linux/macOS) | Opmerking |
|---|---|---|
| Alle PNG → JPG | for f in *.png | do ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg |
| Alle JPG → WebP | for f in *.jpg | do ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp |
| Alle JPG → PNG | for f in *.jpg | do ffmpeg -i "$f" output/${f%.jpg}.png |
| Alle → WebP verliesvrij | for f in *.png | do ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp |
| Formaat wijzigen + converteren | for f in *.jpg | do ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg |
Wanneer FFmpeg niet het juiste gereedschap is
RAW-cameraformaten (CR2, NEF, ARW) — beperkte ondersteuning. Gebruik darktable of RawTherapee.
AVIF-codering — mogelijk via -c:v libaom-av1 maar zonder hardwareversnelling erg traag. libavif of Squoosh CLI zijn sneller.
ICC-kleurprofielen — FFmpeg bewaart ze niet altijd. Voor kleurkritisch werk is ImageMagick betrouwbaarder.
Slechts enkele bestanden? Een online tool zoals FastConvert is sneller — zonder installatie.
Veelgestelde vragen
Samenvatting
FFmpeg-bulkconversie draait om een eenvoudige shell-lus. Test altijd op een kleine batch voordat je je volledige bibliotheek verwerkt.
Afbeeldingen converteren zonder opdrachtregel? FastConvert — gratis, zonder aanmelding.
