الأتمتة والتطوير

تحويل الصور بالجملة مع FFmpeg: دليل عملي

5 دقيقة قراءة
تحويل الصور بالجملة مع FFmpeg: دليل عملي

لديك 500 لقطة شاشة PNG تحتاج تحويلها إلى WebP لموقعك. FFmpeg معروف أساساً كأداة فيديو، لكنه يتعامل مع الصور بنفس الكفاءة.

لماذا FFmpeg للصور؟

FFmpeg على الأرجح مثبت بالفعل إن كنت تعمل على الفيديو. لصيغ RAW (CR2, NEF, ARW) استخدم darktable أو RawTherapee.

تثبيت FFmpeg

bash
# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows (Chocolatey)
choco install ffmpeg

bash
ffmpeg -version

النمط الأساسي

كل أمر تحويل جماعي يتبع نفس البنية: حلقة shell (Linux/macOS) أو حلقة for (Windows). اكتب دائماً في مجلد مخرجات منفصل.

تحويل جميع PNG إلى JPG

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -q:v 2 "output/${f%.png}.jpg"
done

bash
mkdir output
for %f in (*.png) do ffmpeg -i "%f" -q:v 2 "output/%~nf.jpg"

bash
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

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" -quality 85 "output/${f%.*}.webp"
done

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -lossless 1 "output/${f%.png}.webp"
done

WebP ينتج ملفات أصغر بنسبة 25–35% عموماً من JPG المكافئ. للصور الفوتوغرافية النطاق الأمثل 80–85.

التحويل إلى PNG

bash
mkdir -p output
for f in *.jpg *.jpeg; do
  [ -f "$f" ] || continue
  ffmpeg -i "$f" "output/${f%.*}.png"
done

تحويل صيغ مختلطة

bash
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

تغيير الحجم والتحويل في خطوة واحدة

bash
mkdir -p output
for f in *.png; do
  ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 "output/${f%.png}.jpg"
done

bash
mkdir -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

المعالجة التكرارية للمجلدات الفرعية

bash
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

المعالجة المتوازية للسرعة

bash
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 مرات.

مؤشر التقدم

bash
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

معالجة الأخطاء

bash
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 → JPGfor f in *.pngdo ffmpeg -i "$f" -q:v 3 output/${f%.png}.jpg
جميع JPG → WebPfor f in *.jpgdo ffmpeg -i "$f" -quality 85 output/${f%.jpg}.webp
جميع JPG → PNGfor f in *.jpgdo ffmpeg -i "$f" output/${f%.jpg}.png
الكل → WebP بلا خسارةfor f in *.pngdo ffmpeg -i "$f" -lossless 1 output/${f%.png}.webp
تغيير الحجم + تحويلfor f in *.jpgdo ffmpeg -i "$f" -vf scale=1080:-1 -q:v 3 output/${f%.jpg}.jpg

متى لا يكون FFmpeg الأداة المناسبة

صيغ RAW للكاميرا — دعم محدود. استخدم darktable أو RawTherapee.

ترميز AVIF — ممكن لكنه بطيء جداً بدون تسريع عتاد.

بضعة ملفات فقط؟ FastConvert أسرع — دون تثبيت.

الأسئلة الشائعة

بشكل افتراضي لا. أضف -map_metadata 0: ffmpeg -i input.jpg -map_metadata 0 -q:v 3 output.jpg

يحدث عندما يكون JPG المصدر مضغوطاً بشدة. حوّل دائماً من أفضل مصدر متاح.

استخدم PNG كصيغة إخراج أو -lossless 1 لـ WebP.

أضف -y للكتابة التلقائية أو -n لتخطي الملفات الموجودة.

خلاصة القول

تحويل الصور بالجملة مع FFmpeg يعتمد على حلقة shell بسيطة. اختبر دائماً على مجموعة صغيرة قبل معالجة المكتبة بأكملها.

تحويل الصور بدون سطر أوامر? FastConvert — مجاناً، بدون تسجيل.

مشاركة