لديك 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النمط الأساسي
كل أمر تحويل جماعي يتبع نفس البنية: حلقة shell (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 يعتمد على حلقة shell بسيطة. اختبر دائماً على مجموعة صغيرة قبل معالجة المكتبة بأكملها.
تحويل الصور بدون سطر أوامر? FastConvert — مجاناً، بدون تسجيل.
