عند تصدير الصور، هل كنت دائمًا تتعامل مع شريط تمرير جودة JPEG كأنه نسبة مئوية؟ تسحبه إلى 80، وتقول في نفسك: «حافظت على ثمانين بالمئة من الجودة»؛ وترفعه إلى 100، وتظن: «الآن لم يُفقد شيء إطلاقًا».
هذا الفهم يجب قلبه رأسًا على عقب بالكامل: الرقم الموجود على الشريط لا علاقة له إطلاقًا بـ«كم نسبة الجودة التي احتفظت بها»، والجودة 100 ليست بلا فقدان. إليك أولًا الخلاصة العملية المباشرة: إن أردت حفظ الصور بطمأنينة، فاستخدم 85–92؛ وللنشر على الويب ووسائل التواصل، 75–82 كافية؛ ولا تجعل 100 هو الافتراضي، فهو لا يفعل شيئًا سوى مضاعفة الحجم أو حتى ثلاثة أضعافه، دون أن تزيد الجودة قيد أنملة. وفي ما يلي نشرح الأمر بلغة مبسطة، ونفكك هذا الشريط.
بجملة واحدة: ما يتحكم فيه شريط جودة JPEG ليس «كم مقدار الجودة الذي تحتفظ به»، بل مدى قسوة مجموعة القواسم في جدول التكميم — فكلما كبرت القواسم، كان التقريب أقسى، والفقدان أكثر. وعلاقته بالجودة وبالحجم ليست خطية؛ فالتغير من 100 إلى 90 لا يساوي التغير من 20 إلى 10.
لنضع أولًا قاعدة أساسية: JPEG صيغة ذات فقدان، ومن لحظة ضغطك على حفظ تبدأ البيانات بالفقدان. والشريط يحدد فقط «مدى قسوة الفقدان»، لا «هل يحدث الفقدان أم لا». ولطريقة الفقدان مسار ثابت، والشريط هو آخر بوابة في خط الإنتاج هذا.
عند الحفظ، تُحوَّل الصورة أولًا من RGB إلى YCbCr، فيُفصل السطوع عن اللون في مسارين. سبب هذا الفصل أن العين البشرية أقدر على رؤية السطوع من رؤية اللون؛ وبالفصل يصبح من الأسهل الحفاظ على السطوع لاحقًا.
بعد ذلك تُقطَّع الصورة كلها إلى كتل صغيرة 8×8 بكسل، وتُجري كل كتلة تحويل جيب التمام المتقطع (DCT)، لتحويل ألوان البكسل إلى سلسلة قيم تردد. يمكن تشبيه ذلك بتفكيك وتر موسيقي إلى نغمات منفردة: الترددات المنخفضة هي ألوان الأرضية والتدرجات، والترددات العالية هي الحواف الحادة والأنسجة الدقيقة. النسخة الكاملة من هذه العملية مشروحة بالتفصيل في مدخل JPEG على ويكيبيديا.
الضربة القاضية الحقيقية تأتي في الخطوة الأخيرة: كل قيمة تردد تُقسم على رقم من جدول التكميم (Quantization Table)، ثم تُقرَّب إلى عدد صحيح. التقريب هو المكان الذي تموت فيه المعلومات نهائيًا — الكسور التي لا تُقسم تمامًا تُرمى ولا يمكن استعادتها. وشريط الجودة يتحكم في مدى قسوة هذه القواسم: كلما ارتفعت قيمة الشريط، صغرت القواسم، فلم يكد التقريب يؤذي البيانات؛ وكلما انخفضت قيمة الشريط، كبرت القواسم، فمحا التقريب التفاصيل. وقواسم المكونات عالية التردد تزداد أسرع، لذلك تكون الحواف والأنسجة الدقيقة أول ما يُضحّى به في كل مرة.
لهذا لا يمكن أن يكون نسبة مئوية. في الانتقال من 100 إلى 90 ومن 20 إلى 10، يختلف تغيّر القواسم وفرق الجودة والحجم تمامًا — قرب 90 قد تحرك درجة واحدة فلا تشعر بشيء؛ وقرب 20 تحرك درجة واحدة فتُتلف الصورة. اعتباره نسبة مئوية هو أكثر الأخطاء الشائعة وأكثرها تكلفة في هذا العنصر.
الجواب أولًا: 100 لا تزال بعيدة عن أن تكون بدون فقدان بسبب عيبين صارخين؛ أحدهما لا يعبأ بالشريط إطلاقًا، والآخر لا يستطيع الشريط إنقاذه حتى لو أراد.
الأول هو أخذ العينات الفرعية للون (chroma subsampling). بعد تحويل RGB إلى YCbCr، وقبل أن يبدأ الضغط فعليًا، تتخلص معظم المُرمِّزات أولًا من نحو 75% من تفاصيل اللون، وللسبب نفسه: العين البشرية بطيئة في إدراك اللون، فلن تلاحظ الفقدان. هذه الخطوة لا يتحكم فيها الشريط أصلًا؛ حتى لو اخترت 100 فستُنفَّذ كما هي.
والثاني أن الرياضيات نفسها غير نظيفة. حتى لو ضُبطت القواسم في جدول التكميم عند أصغر قيمة، فإن رحلة «بكسل إلى تردد، ثم تردد إلى بكسل» تحمل أخطاء تقريب صغيرة. وعند فتح الملف المحفوظ، لن تجد البكسلات نفسها التي كانت لديك عند الضغط على حفظ.
إن أردت ألا تفقد بتًا واحدًا حقًا، فاذهب إلى المسار بدون فقدان: PNG أو TIFF، أو وضع بدون فقدان في WebP. الفقدان طريق باتجاه واحد؛ وكل درجات JPEG كذلك، بما فيها تلك الدرجة 100 التي تبدو «مثالية».
كميات كبيرة من الاختبارات العملية والمقارنات على مستوى البكسل انتهت كلها إلى حد فاصل واضح جدًا: نطاقان يغطيان تقريبًا كل الحالات.
85–92 هو نطاق الحفظ. معرض الأعمال، الصور التي ستُسلَّم للعميل، والصور الأصلية التي لا تريد المساس بها: ضعها في هذا النطاق. الملف المحفوظ بجودة 90 يساوي تقريبًا 1/8 إلى 1/12 من حجم الملف غير المضغوط، والفرق لا يُرى بالعين — عليك أن تكبّر إلى 400% وتحدّق في بقعة معينة لتكتشف التغيير.
75–82 هو نطاق الويب. صور المواقع، والرفع إلى وسائل التواصل: ضعها في هذا النطاق. الملف يصغر بنسبة 40%–60% إضافية مقارنة بنطاق الحفظ، والثمن أساسًا لين طفيف في الأنسجة المعقدة، ولا يُلاحظ عادة عند المشاهدة العادية.
إذا كنت قد قرأت المقالة السابقة «ذات الفقدان وبدون فقدان»، فإن المنطقة المثلى 80–85 المذكورة هناك لا تتعارض مع هذين النطاقين: فحول 80 يقع أصلًا داخل نطاق الويب، و85 تدخل مباشرة في نطاق الحفظ. والصور التي حُفظت بالفعل عند 80–85 لا حاجة إلى إعادة ضغطها.
لتلخيص المستويات الثلاثة في جملة واحدة: الأشياء التي تريد الاحتفاظ بها ضعها عند 85–92، والأشياء التي سترسلها ضعها عند 75–82، وما دون 60 منطقة ألغام، فابتعد عنها.
أن يكون الافتراضي عند التصدير هو 100، فهذا قلق لا استراتيجية. الملف بجودة 85 أصغر بنسبة 60%–75% من الملف بجودة 100، ومع ذلك لا يظهر أي فرق في الجودة؛ وبالنسبة للويب، هذا مجرد إطالة زمن التحميل بلا مقابل.
عند تجاوز الشريط 60 نزولًا، لا تسقط الجودة على شكل منحدر، بل على شكل هاوية.
السبب مجددًا هو التقريب. عندما تكون القيمة منخفضة جدًا، تصبح قواسم المكونات عالية التردد كبيرة إلى حد سخيف؛ وبعد قسمة قيمة تردد ثم تقريبها، تصبح صفرًا — أي أن هذا التفصيل لم يُحفظ أصلًا. وهكذا تختفي فئات كاملة من المعلومات البصرية دفعة واحدة: خصلات الشعر، ونسيج الأقمشة، وأطراف حروف الخطوط المُذيَّلة (serif)، كلها من أوائل ما يختفي.
ما يتبقى هو تشوهات JPEG القياسية: بقع ملوّنة بحجم 8×8، ونطاقات لونية متجاورة (banding) في التدرجات، وحواف مشعرة وضجيج البعوض (mosquito noise) بجانب الحواف الحادة. الأشكال الكبيرة لا تزال موجودة، لكن الصورة لم تعد «صورة تُعرض للناس».
لذلك خلاصتي هي: 60 هو الحد الأدنى العملي للصور العادية. تلك الكيلوبايتات القليلة التي توفرها بالنزول أكثر، تأتي بمقابل يبدو مزيفًا من أول نظرة، ولا تستحق ذلك.
«الجودة 90» ليست عملة موحدة. يقدّم معيار JPEG مجموعة جداول تكميم موصى بها (الملحق K)، لكن أي جدول يستخدمه كل برنامج وكيف يُكيِّفه (أو يُعيد قياسه)، أمر يحدده كل برنامج بنفسه. ومع «الجودة العالية» نفسها، تختلف الأرقام التي تعطيها أربع أدوات شائعة اختلافًا كاملًا: مقياس Photoshop من 0 إلى 12، و10 عنده تعادل تقريبًا 90 في التنفيذ المرجعي libjpeg؛ أما GIMP وImageMagick فمقياسهما من 1 إلى 100، وGIMP يأخذ 85 في وضع «الجودة العالية»، وImageMagick يأخذ 92؛ وlibjpeg، بصفته التنفيذ المرجعي، قيمته المرجعية 90.
وحتى لو ضبطت أداتان على «الجودة 85»، فلن يكون الملف المُصدَّر منهما واحدًا. لذلك لا تحفظ رقمًا في برنامج واحد ثم تنقله كما هو إلى برنامج آخر. للمقارنة بين البرامج والمشاريع، هناك طريقتان موثوقتان فقط: انظر إلى حجم الخرج الفعلي، وانظر إلى تأثير الصورة الفعلي.
إذا كان الشريط غير موثوق، والعين المجردة تتأثر بالشاشة والحالة، فهل يمكن قياس «عدم رؤية الفرق» كميًا؟ نعم، والطريقة الأكثر موثوقية هي تغيير المسطرة: مؤشر التشابه البنيوي (SSIM، Structural Similarity Index Measure).
فهو لا يقارن البكسلات واحدًا واحدًا، بل ينظر إلى مقدار تغير ثلاثة أشياء: البنية، والسطوع، والتباين؛ وهو أقرب إلى طريقة العين البشرية في الحكم على الصورة من مجرد عدّ البكسلات التي اختلفت. الدرجة من 0 إلى 1، و1 تعني أن الصورتين متطابقتان تمامًا. المعادلة وخلفيتها مشروحة بوضوح في مدخل SSIM على ويكيبيديا.
وبالنظر إلى مستويات الجودة الشائعة، يكون SSIM تقريبًا بهذا المستوى: الملف بجودة 85 يحصل عادة على درجة أكبر من 0.97، فلا يمكن تمييزه بصريًا عن الأصل؛ وعند الهبوط إلى 60، تقع الدرجة بين 0.90–0.93، مع لين طفيف لا يُرى إلا عند التكبير؛ وعند 40، لا يتبقى سوى 0.82–0.87، والتشوهات تصبح مرئية بالعين المجردة.
هذه الأرقام أصدق بكثير من الشريط. وإن أردت تحديد الجودة دون تخمين، يمكنك استخدام أمر compare في ImageMagick لحساب SSIM بين صورتين مباشرة، والعثور على النقطة التي «توفّر أكبر حجم ممكن من دون النزول تحت عتبة الإدراك 0.85».
الأداة الصغيرة أدناه تعمل بالكامل داخل متصفحك — الصور لا تُرفع أبدًا. اختر صورة (أو انقر على «جرّب الصورة النموذجية»)، واسحب الشريط وراقب كيف يتغير الحجم المضغوط وقيمة SSIM؛ كما يمكنك جعلها تعثر تلقائيًا على الإعداد ذي الحجم الأصغر عند SSIM ≥ 0.85. تُحسب قيمة SSIM في الوقت الفعلي على الصورة التي ضغطتها للتو — وهي المسطرة نفسها من القسم السابق.
ملاحظة: لا تكشف مُرمِّزات JPEG الأصلية في المتصفحات عن أخذ العينات الفرعية للون ولا عن جداول التكميم، لذا تعرض هذه الأداة الأثر الحقيقي للشريط وتُقيس الفرق كميًا عبر SSIM بدلًا من السماح بتغيير تفاصيل المُرمِّز الداخلية — وهو ما يؤكد تمامًا ما تقوله هذه المقالة: الجودة 100 ليست بلا فقدان، والرقم نفسه يعني أشياء مختلفة من برنامج لآخر.
في الغالبية العظمى من الحالات، حوالي 80 يكفي، ولا ينبغي أن يكون 100 هو الافتراضي. الملف بجودة 85 أصغر بنسبة 60%–75% من الملف بجودة 100، ومع ذلك لا ترى العين أي فرق؛ فإن أردت الاطمئنان للصور فضعها عند 85–92، وللويب ووسائل التواصل 75–82 كافية، وما دون 60 يُظهر تشوهات واضحة.
لا. حتى عند رفعها إلى 100، يخسر JPEG عادة نحو 75% من تفاصيل اللون أولًا في أخذ العينات الفرعية للون، ثم يُحدِث التكميم والتقريب خسارة لا رجعة فيها. وإن أردت صورة بدون فقدان، فاستخدم PNG أو TIFF أو WebP بدون فقدان.
مقياس جودة JPEG في Photoshop هو 0–12، وليس 1–100، و10 عنده تعادل تقريبًا 90 في التنفيذ المرجعي libjpeg. تختلف البرامج في ربط الرقم نفسه، فلا تنقل الأرقام كما هي بين البرامج، واعتمد على حجم الخرج الفعلي وتأثير الصورة.
المقارنة مع الأصل بعد التكبير هي الأكثر مباشرة؛ وإن أردت مؤشرًا موضوعيًا فاستخدم SSIM. ملف JPEG بجودة 85 يكون SSIM عادة أكبر من 0.97، ولا يُميَّز بصريًا عن الأصل؛ وعند حوالي 40 يهبط إلى 0.82–0.87، وتصبح التشوهات مرئية بالعين. ويمكن لأمر compare في ImageMagick حساب هذه الدرجة مباشرة.
الرقم الموجود على الشريط هو معامل قسمة، وليس نسبة مئوية للجودة؛ و100 ليست بلا فقدان، وما دون 60 هاوية. وإن أردت قاعدة واحدة حقًا: احفظ الصور عند 85، واحفظ ما سترسله إلى الويب عند 80، ولا حاجة إلى 100 في أي مكان — فالملف يتضاعف، والجودة لا تزيد قيد أنملة.
وإن أردت أن تنتقل من اختيار الصيغة وتغيير الأبعاد إلى ضبط الجودة وتسريع الويب، فاقرأ الدليل الكامل لضغط الصور؛ فالسلسلة كلها موجودة في تلك المقالة.