في عالم ضغط الصور، يظهر رقم واحد باستمرار: 75. انظر إلى الإعدادات الافتراضية لأي أداة ضغط تقريبًا، وستجد عامل الجودة مضبوطًا مسبقًا في مكان ما بالقرب من هذه القيمة. هذا ليس تخمينًا هندسيًا ولا قرارًا عشوائيًا للجنة — بل ينبثق من البنية الرياضية لخوارزمية JPEG نفسها. تتناول هذه المقالة مسار ضغط JPEG الكامل، وتفكك "عامل الجودة" إلى مستوى تحجيم جدول التكميم، وتوضح لك بالضبط لماذا 75 هو النقطة المثالية بين حجم الملف والجودة البصرية.
1. مسار ضغط JPEG بنظرة عامة
JPEG (Joint Photographic Experts Group) هو معيار ضغط مع فقدان البيانات. فكرته الأساسية هي استغلال حساسية النظام البصري البشري للسطوع، وعدم حساسيته النسبية للون، وتحمله للتفاصيل عالية التردد، مع التخلص من المعلومات التي يصعب إدراكها. يتكون المسار من خمس مراحل.
المرحلة 1 — تحويل مساحة اللون: RGB ← YCbCr
تُخزَّن الصور المصدرية عادةً في RGB (أحمر، أخضر، أزرق)، لكن JPEG يحولها أولاً إلى مساحة لون YCbCr:
- Y: السطوع، معلومات الإضاءة
- Cb: الكرومانس الأزرق
- Cr: الكرومانس الأحمر
صيغ التحويل هي:
Y = 0.299·R + 0.587·G + 0.114·B
Cb = -0.1687·R - 0.3313·G + 0.5·B + 128
Cr = 0.5·R - 0.4187·G - 0.0813·B + 128
توجد هذه الخطوة لأن العين شديدة الحساسية لتغيرات السطوع (يمكنها تمييز فروق الإضاءة الدقيقة) لكنها غير حساسة نسبيًا للكرومانس. لذلك يمكن اختزال قناتي Cb و Cr بشكل كبير (اختزال لوني 4:2:0) بينما تُحتفظ Y بالدقة الكاملة. هذه الخطوة وحدها تقلل البيانات إلى النصف تقريبًا دون فقدان ملحوظ.
المرحلة 2 — تقسيم الكتل 8×8 وإزاحة المستوى
تُقسَّم الصورة إلى كتل بكسل بحجم 8×8. تتراوح قيمة كل بكسل من 0 إلى 255؛ لجعل حساب DCT اللاحق أكثر نظافة، يُطرح 128 من كل قيمة لتوسيط النطاق بين -128 و 127.
المرحلة 3 — تحويل جيب التمام المتقطع ثنائي الأبعاد (DCT)
تُحوَّل كل كتلة 8×8 باستخدام DCT ثنائي الأبعاد، مما ينقل البيانات من المجال المكاني إلى مجال التردد. والنتيجة هي مصفوفة معاملات 8×8. يحتوي الزاوية العلوية اليسرى على معامل DC (متوسط سطوع الكتلة)؛ وعند التحرك نحو الزاوية السفلية اليمنى، تمثل معاملات AC ترددات أعلى تدريجيًا — تفاصيل دقيقة، وحواف، وملمس.
تحويل DCT نفسه قابل للعكس ولا يفقد البيانات، لكنه يعيد تنظيم المعلومات حسب الأهمية البصرية: المعاملات منخفضة التردد تحمل الشكل الرئيسي للصورة، بينما المعاملات عالية التردد تحمل التفاصيل والضوضاء في الغالب. هذا يمهد الطريق لمرحلة الفقدان التي تليها.
المرحلة 4 — التكميم: حيث يحدث الفقدان
معاملات DCT هي أعداد عشرية ولا يمكن ترميزها مباشرة. يقوم JPEG بقسمة كل معامل على القيمة المقابلة له من جدول تكميم 8×8، مما ينتج أعدادًا صحيحة. وكلما كان القاسم أكبر، كانت النتيجة أخشن وأكثر المعلومات تُفقد.
هناك جدولان: واحد للسطوع وواحد للكرومانس. جدول السطوع القياسي لـ JPEG يحتوي على قيم صغيرة في الزاوية العلوية اليسرى (مثل 16) وقيم كبيرة في الزاوية السفلية اليمنى (مثل 99) — وهذا يستغل عدم حساسية العين للترددات العالية حتى يمكن التخلص منها بشكل أكثر عدوانية.
هذه هي المرحلة الوحيدة ذات الفقدان في المسار بأكمله، وهي بالضبط حيث يقوم عامل الجودة بعمله.
المرحلة 5 — الترميز الإنتروبي: إنهاء بدون فقدان
تُمسح المعاملات المكممة بترتيب متعرج (من التردد المنخفض إلى العالي)، وتُرمَّز بطول التشغيل (RLE) لضغط تتابعات الأصفار، ثم تُضغط بشكل أكبر باستخدام ترميز هوفمان أو الترميز الحسابي. هذه المرحلة بدون فقدان تمامًا — فهي فقط تحزم البيانات بشكل أكثر إحكامًا.
المسار الكامل يبدو كالتالي:
2. ما الذي يتحكم فيه عامل الجودة فعليًا
يفترض الكثيرون أن عامل الجودة (Q) هو "درجة جودة" من 0 إلى 100. هذا غير صحيح. ما يتحكم فيه فعليًا هو تحجيم جدول التكميم.
صيغة تحجيم جدول التكميم
يحدد JPEG جدول تكميم أساسي. عامل الجودة لا يستبدل الجدول — بل يحجم كل قيمة وفقًا لهذه الصيغة:
If Q >= 50:
scale = 5000 / Q
If Q < 50:
scale = 200 - 2·Q
quant_value = floor((baseline_value × scale + 50) / 100)
quant_value = clamp(quant_value, 1, 255) # الحد الأدنى 1، الحد الأقصى 255
النقاط الرئيسية من هذه الصيغة:
- Q = 100: scale = 50، قيم التكميم تساوي نحو نصف القيم الأساسية، لا تُفقد معلومات تقريبًا (لكن خطأ التكميم لا يزال موجودًا، لذا JPEG ليس بدون فقدان حقًا).
- Q = 50: scale = 100، قيم التكميم تساوي القيم الأساسية — هذه هي النقطة المرجعية لمعيار JPEG.
- Q = 75: scale = 5000/75 ≈ 66.7، قيم التكميم تساوي نحو 2/3 من القيم الأساسية — أكثر مرونة قليلاً من النقطة المرجعية.
- Q < 50: scale يتجاوز 100، يصبح التكميم أخشن تدريجيًا وتُمحى التفاصيل عالية التردد.
- Q = 1: scale = 198، تُصفَّر جميع المعاملات عالية التردد تقريبًا وتصبح التشوهات الكتلية واضحة.
لماذا 75 هو النقطة المثالية
المفتاح يكمن في العائد الحدي على منحنى التكميم. من Q50 إلى Q75، ينخفض حجم الملف بشكل حاد بينما يكون فقدان الجودة البصرية ضئيلًا؛ ومن Q90 إلى Q95، ينتفخ حجم الملف بينما يكون تحسن الجودة غير مرئي للعين.
ضع في اعتبارك مقارنة محددة: باستخدام حجم Q95 كخط أساس 100%، عادةً ما يقع Q75 عند حوالي 30%–35%، بينما ينخفض PSNR (نسبة الذروة من الإشارة إلى الضوضاء) بمقدار 2–3 ديسيبل فقط، وينخفض SSIM (التشابه الهيكلي) بأقل من 0.05. بعبارة أخرى، Q75 يضحي بـ 1/3 من حجم الملف مقابل أكثر من 95% من الجودة البصرية. هذا هو السبب الأساسي لكونه القيمة الافتراضية — فهو يقع تمامًا على حافة الضغط بدون فقدان بصري، والذهاب أبعد من ذلك مضيعة.
لاحظ أين يقع Q75 على الرسم البياني: انخفض شريط الحجم إلى 32% بينما لا تزال منحنى الجودة قريبة من 90% — هذا هو المعنى الهندسي لـ "النقطة المثالية".
3. قياس عوامل جودة مختلفة في Python
النص البرمجي أدناه يستخدم Pillow (PIL) لضغط نفس الصورة بعوامل جودة مختلفة وطباعة مقارنة. يمكنك تشغيله مباشرة للتحقق من الاستنتاجات أعلاه.
from PIL import Image
from io import BytesIO
import os
def compress_jpeg(img_path, quality):
"""ضغط الصورة بعامل الجودة المحدد، إرجاع الحجم بالبايت."""
img = Image.open(img_path).convert('RGB')
buffer = BytesIO()
img.save(buffer, format='JPEG', quality=quality, optimize=True, subsampling=2)
return buffer.tell()
def compare_qualities(img_path):
original_size = os.path.getsize(img_path)
print(f"الملف المصدر: {img_path}")
print(f"الحجم الأصلي: {original_size / 1024:.1f} كيلوبايت")
print(f"{'الجودة':<10}{'الحجم(كB)':<12}{'النسبة':<10}{'التوفير':<12}{'vs Q95':<10}")
print("-" * 58)
sizes = {}
for q in [95, 85, 75, 65, 50, 30, 10]:
size = compress_jpeg(img_path, q)
sizes[q] = size
ratio = original_size / size
saving = (1 - size / original_size) * 100
rel = size / sizes[95] * 100 if q != 95 else 100
print(f"Q{q:<8}{size/1024:<12.1f}{ratio:<10.2f}{saving:<12.1f}{rel:<10.1f}")
# تقرير توفير Q75 مقارنة بـ Q95
if 95 in sizes and 75 in sizes:
saved = (1 - sizes[75] / sizes[95]) * 100
print(f"\nQ75 يوفر {saved:.1f}% مقارنة بـ Q95")
if __name__ == '__main__':
compare_qualities('sample.jpg')
مخرجات نموذجية (باستخدام صورة منظر طبيعي 4000×3000):
الملف المصدر: sample.jpg
الحجم الأصلي: 5823.4 كيلوبايت
الجودة الحجم(كB) النسبة التوفير vs Q95
----------------------------------------------------------
Q95 1245.8 4.67 78.6% 100.0
Q85 722.5 8.06 87.6% 58.0
Q75 398.7 14.61 93.2% 32.0
Q65 274.2 21.24 95.3% 22.0
Q50 186.9 31.16 96.8% 15.0
Q30 99.5 58.52 98.3% 8.0
Q10 49.8 116.91 99.1% 4.0
Q75 يوفر 68.0% مقارنة بـ Q95
تؤكد الأرقام الاستنتاج السابق: Q75 يقطع حوالي 68% من الحجم مقارنة بـ Q95، بينما الصورتان غير قابلتين للتمييز عمليًا عند مسافة العرض العادية على الشاشة.
4. مقارنة تنسيقات الصور الشائعة
بعد فهم JPEG، من المفيد وضعه في سياق نظام تنسيقات الصور الأوسع. كل تنسيق يجسد فلسفة ضغط مختلفة.
| التنسيق | الضغط | الشفافية | التحريك | النسبة النموذجية | أفضل حالة استخدام |
|---|---|---|---|---|---|
| JPEG | مع فقدان (DCT) | لا | لا | متوسط-عالٍ | الصور، الصور ذات الألوان الطبيعية، صور الويب المصغرة |
| PNG | بدون فقدان (DEFLATE) | نعم (8بت/16بت) | لا | منخفض | الأيقونات، عناصر الواجهة، لقطات الشاشة النصية، الشفافية |
| WebP | مع فقدان + بدون فقدان | نعم | نعم | عالٍ (أصغر بنسبة 25%–35% من JPEG) | الصور الحديثة، استبدال التحريك، الحجم الأدنى |
| TIFF | بدون فقدان / مع فقدان (اختياري) | نعم | لا | منخفض | الطباعة، المسح، الأرشفة الاحترافية |
| BMP | غير مضغوط | لا | لا | منخفض جدًا (بكسلات خام) | غير موصى به، قديم فقط |
بعض الملاحظات:
- JPEG لا يدعم الشفافية: أكبر عيب فيه. الأيقونات التي تحتاج إلى خلفية شفافة يجب أن تستخدم PNG أو WebP.
- PNG هو "الثقيل" بدون فقدان: جودة مثالية لكن ملفات كبيرة — صورة 4000×3000 محفوظة كـ PNG يمكن أن تتجاوز 20 ميجابايت.
- WebP هو أقوى منافس لـ JPEG: في وضع الفقدان أصغر بنسبة 25%–35% من JPEG عند جودة مكافئة، مع دعم الشفافية والتحريك. نقطة ضعفه هي الدعم غير الكامل في المتصفحات القديمة وبعض سلاسل الأدوات.
- TIFF/BMP غير مناسبين للويب: فهما ينتميان إلى سير العمل الاحترافي أو موجودان كتنسيقات قديمة.
5. الدقة وعامل الجودة يعملان معًا
كثيرون مهووسون بعامل الجودة متجاهلين الدقة، وهي في الواقع الرافعة الأقوى. في الممارسة العملية، يحقق خفض الدقة غالبًا وفورات أكبر في الحجم من خفض الجودة.
الاستراتيجية ذات الخطوتين
صورة أصلية 4000×3000 (حوالي 12 ميجابكسل) محفوظة مباشرة كـ JPEG عند Q95 يمكن أن تتجاوز 4 ميجابايت. لكن الشاشة عادةً تحتاج فقط إلى 1920×1080 (حوالي 2 ميجابكسل)، لذا هناك قدر كبير من التكرار.
التحسين ذو الخطوتين:
- الخطوة 1 — خفض الدقة. التحجيم من 4000×3000 إلى 1920×1080 يقلل عدد البكسلات من 12M إلى 2M، أي انخفاض بحوالي 83%. نظرًا لأن حجم JPEG يتناسب تقريبًا مع عدد البكسلات، فهذه الخطوة وحدها تزيل حوالي 75%–83% من البايتات.
- الخطوة 2 — ضبط عامل الجودة. عند الدقة الجديدة، خفض Q95 إلى Q75. نظرًا لأن تصغير الحجم قد سوى بالفعل الكثير من التفاصيل عالية التردد، فإن تشوهات كتل Q75 شبه غير مرئية عند هذه الدقة، مما يزيل حوالي 50% أخرى من البايتات.
مجتمعة، الحجم النهائي يبلغ حوالي 8%–10% من الأصل. يمكن تقليل صورة مصدرية بحجم 4 ميجابايت إلى 300–400 كيلوبايت مع تجربة عرض على الشاشة بدون فقدان عمليًا.
هناك قاعدة ترتيب مهمة هنا: خفض الدقة أولاً، ثم خفض عامل الجودة. القيام بالعكس (ضغط الجودة قبل التحجيم) يجعل المحجم يضخم تشوهات كتل JPEG، مما يجعل النتيجة تبدو أسوأ.
6. شجرة قرار اختيار التنسيق
عندما يكون لديك صورة، أي تنسيق تختار؟ شجرة القرار هذه تعطي إجابة سريعة:
باختصار: الصور تذهب إلى JPEG أو WebP، الأيقونات والنصوص تذهب إلى PNG، وأي شيء يحتاج إلى شفافية يجب أن يتجنب JPEG.
7. الأسئلة الشائعة: ثلاثة أسئلة شائعة
س1: لماذا يُعتبر Q75 "أفضل" عامل جودة؟
لأن منحنى التكميم لديه نقطة انعطاف هنا. Q75 يقابل scale بحوالي 66.7، مما يضغط جدول التكميم إلى حوالي 2/3 من أساسه. في هذه النقطة، المعاملات منخفضة التردد الأكثر حساسية للعين تُحفظ سليمة تقريبًا، بينما تبدأ المعاملات عالية التردد غير المهمة بصريًا في التخلص منها بشكل معقول. الرفع إلى Q85 أو Q95 يضخم حجم الملف أسرع بكثير مما يحسن الجودة؛ الخفض إلى Q60 أو Q50 يجعل التشوهات الكتلية والرنين مرئية. يقع Q75 مباشرة في المنطقة التي ينخفض فيها الحجم بسرعة والجودة ببطء، ولهذا يُستخدم على نطاق واسع كقيمة افتراضية. لاحظ أن "الأفضل" نسبي بالنسبة لعرض شاشة الويب — الطباعة الاحترافية أو الأرشفة قد تحتاج إلى Q90 أو أعلى.
س2: هل يمكن لـ WebP استبدال JPEG تمامًا؟
من حيث كفاءة الضغط، وضع الفقدان في WebP أصغر بنسبة 25%–35% من JPEG عند SSIM مكافئ، ويدعم الشفافية والتحريك، لذا فهو متفوق تقنيًا. لكن "الاستبدال الكامل" لا يزال غير ممكن لثلاثة أسباب. أولاً، بعض المتصفحات القديمة ومكتبات معالجة الصور لا تدعم WebP بالكامل. ثانيًا، كان ترميز WebP أبطأ من JPEG في التطبيقات المبكرة (رغم أن المكتبات الحديثة سدت هذه الفجوة إلى حد كبير). ثالثًا، يتمتع JPEG بـ 30 عامًا من تشبع النظام البيئي — مخرجات الكاميرا، ومنصات CMS، ومرفقات البريد الإلكتروني جميعها تدعمه بشكل مثالي. الممارسة الهندسية الشائعة هي إخراج كلتا النسختين JPEG و WebP والسماح للمتصفح بالاختيار عبر وسم <picture>.
س3: ماذا يحدث إذا أُعيد ضغط نفس الصورة كـ JPEG بشكل متكرر؟
تتراكم التشوهات، وهي غير قابلة للعكس. كل ضغط JPEG يعيد تشغيل التكميم و DCT؛ التشوهات الكتلية والرنين الذي أدخلته المرحلة السابقة يُعامل كـ "محتوى صورة" ويُكمَّم مرة أخرى، فتصبح التشوهات أكثر وضوحًا تدريجيًا وتتدهور الجودة في نمط درجي. تُسمى هذه الظاهرة "فقدان الجيل" (generation loss). الحل هو الاحتفاظ بنسخة رئيسية بدون فقدان (PNG/TIFF أو JPEG عند Q100) واشتقاق كل نسخة من تلك النسخة الرئيسية — عدم إعادة ضغط JPEG مضغوط بالفعل. إذا كانت التعديلات المتعددة لا مفر منها، احفظ نسخ العمل بتنسيق وسيط بدون فقدان (PSD، TIFF) واضغط إلى JPEG فقط عند الإخراج النهائي.
8. الملخص ومرجع المعاملات السريع
جوهر ضغط JPEG هو مقايضة معلومات مجال التردد بحجم الملف، وعامل الجودة هو في الأساس مفتاح يضخم جدول التكميم. Q75 هو الرقم السحري لأنه يقع بالضبط في نقطة انعطاف منحنى التكميم: الرفع يضخم الحجم دون تحسن جودة ملحوظ؛ الخفض يبدأ في جعل التشوهات الكتلية مرئية. بالاقتران مع خفض دقة معقول، يسمح Q75 لصورة متعددة الميجابكسل بالظهور على الويب بحجم بضع مئات الكيلوبايت مع فقدان بصري ضئيل.
بمجرد فهم المبادئ، يتوقف اختيار المعاملات عن يكون تخمينًا. هذا المرجع السريع للاستخدام اليومي:
| السيناريو | التنسيق الموصى به | عامل الجودة | الدقة | الحجم المتوقع |
|---|---|---|---|---|
| صورة مقال ويب (صورة) | JPEG | 75–80 | الحافة الطويلة ≤ 1920px | 200–400 كيلوبايت |
| صورة ويب مصغرة | JPEG | 70 | الحافة الطويلة ≤ 400px | 15–40 كيلوبايت |
| أيقونة / عنصر واجهة | PNG | — | الأصلية | متغير |
| لقطة شاشة نصية | PNG | — | الأصلية | متغير |
| خلفية شفافة | WebP / PNG | — | الأصلية | — |
| أرشيف صور عالية الدقة | JPEG | 90–95 | الأصلية | 2–5 ميجابايت |
| إخراج للطباعة | TIFF / PNG | — | ≥ 300 DPI | غير محدود |
| موقع حديث، حجم أدنى | WebP | 75–80 | الحافة الطويلة ≤ 1920px | 150–300 كيلوبايت |
أتقن الخط الرئيسي — تحويل مساحة اللون ← DCT ← التكميم ← الترميز الإنتروبي — افهم كيف يضخم عامل الجودة جدول التكميم، ثم ادمجه مع خفض الدقة واختيار التنسيق، ويتحول ضغط الصور من "ضبط المعاملات بالشعور" إلى قرار هندسي قائم على الأدلة.
مقالات ذات صلة:
- دليل ضغط الصور: مقارنة واختيار صيغ JPG/PNG/WebP
- الدليل الشامل لضغط الملفات: مبادئ وطرق ضغط PDF/الصور/الفيديو/المستندات
هل تحتاج لضغط الملفات؟ جرّب SmartSlim
على أساس محرك ضغط Rust خاص، يدعم 10 فئات رئيسية و40+ صيغة بما في ذلك PDF/الصور/الفيديو/Office/OFD. معالجة محلية — البيانات لا تغادر نطاقك.