ساعدني على فهم ضغط الصور

لست متأكدًا تمامًا من فهمي لضغط الصور في Discourse. وضح لي الأمر.

  • لقد قمت بتحميل صورة بدقة 2392x884 وحجم 214 كيلوبايت وظلت الدقة كما هي.
  • لقد قمت بتحميل صورة بدقة 3200x1800 وحجم 1.7 ميجابايت وتم تقليص الدقة إلى composer media optimization image resize dimensions threshold.

مع ضبط الإعداد على عرض 1280، توقعت أن يتم تقليص جميع الصور إلى هذا العرض. ومع ذلك، يبدو أن composer media optimization image bytes optimization threshold هو الذي يحدد الأسبقية.

  • كانت صورتي الأولى أقل من 524 كيلوبايت، لذلك لم يتم تغييرها.
  • كانت صورتي الثانية أكبر من 524 كيلوبايت، لذلك تم تغييرها.

إذا كنت أفهم بشكل صحيح، فهل هناك طريقة لتقليل جميع الملفات التي تم تحميلها إلى عرض 1280؟

إليك إعداداتي للتأكيد:

max image size kb = 4096

ربما قم بتعيين هذا الحد على قيمة منخفضة جدًا؟

4 إعجابات

نظرًا لأن الموضوع مُسمى بطريقة عامة جدًا، فلن أبدأ موضوعًا جديدًا :kissing_face_with_smiling_eyes: ولكن ماذا يعني “تحسين جانب العميل” (client-side optimization) من الناحية العملية - هل سيقرر نظام تشغيل الجهاز بنفسه ما إذا كان سيفعل شيئًا أم لا؟ ولكن هذا سيؤدي إلى وضع يتطلب نقل صورة كبيرة جدًا إلى العميل قبل أن يتغير حجمها إلى مقياس لائق، أم أنني تائه تمامًا الآن؟

بعد الاختبار، هذا صحيح :slight_smile:
أعتقد أن حل @pfaffman هو الطريق الصحيح لتحقيق ما تريده.

شرح طويل: Faster (and smaller) uploads in Discourse with Rust, WebAssembly and MozJPEG
شرح قصير: يتم تغيير حجم/إعادة ضغط الصور الكبيرة على جهازك (عبر جافاسكريبت) قبل إرسالها إلى Discourse.

3 إعجابات

حسنًا، يعمل في هذا الاتجاه. حسنًا، هذه طريقة أذكى بكثير من التحسين في الاتجاه الآخر :man_facepalming:

شكرًا.

لقد جربت ذلك الليلة الماضية قبل النشر ويبدو أن هذا هو المفتاح.

إليك الأمر:

composer media optimization image bytes optimization threshold

  • الإعداد 524288 (الافتراضي) = جودة صورة جيدة، 1920 بكسل.
  • الإعداد 200000 = صورة متدهورة، حيث تنخفض الدقة من 1920 إلى 1280 بكسل.

لذلك هذا الصباح، على سطح المكتب الخاص بي، أخذت نفس الصورة (2392 بكسل)، وقمت بتغيير حجمها إلى 1280 بكسل وتدهورت قليلاً أيضًا. لذا فإن التدهور الذي لا يمكنني التغلب عليه. إنه ناتج عن خفض الدقة من 2392 بكسل إلى 1280 بكسل. لقد قلل حجم الصورة أربع مرات.

ملاحظة: صور .HEIC لا تتبع نفس القواعد. تم تقليل صورة .HEIC بدقة 4032 بكسل إلى 2016 بكسل. لذلك لا أعرف كيف تم تطبيق هذا الإعداد.

بشكل عام، أعتقد أنني فهمت الأمر، بعد القليل من التجربة والخطأ. أعتقد أنني سأستخدم الإعدادات الافتراضية، فأنا حقًا أحب الوضوح الإضافي لصورة 1920 بكسل مقارنة بـ 1280 بكسل.

آمل أن يساعد هذا شخصًا آخر.

تعديل: قمت بخفض composer media optimization image bytes optimization threshold من الافتراضي 524288 إلى 200000. لاحظت، عند تحميل ملف .png أساسي بدقة 1220 بكسل @ 414 كيلوبايت، نتج عنه ملف بحجم 406 كيلوبايت فقط. عن طريق تقليل الإعداد أعلاه إلى 200000، تم تقليل حجم الملف من 414 كيلوبايت إلى 201 كيلوبايت. لم تتغير الدقة.

لذلك لا أعرف ما الذي يتم تشغيله أيضًا بهذا الإعداد، ولكن من الواضح أن هناك شيئًا آخر لتقليل حجم الصورة بشكل أكبر.

أجد الرسم البياني في منشور المدونة مفيدًا:

X → composer media optimization image bytes optimization threshold
Y → composer media optimization image resize dimensions threshold
Z → composer media optimization image resize width target

6 إعجابات

أخشى أن أكون غبيًا لعدم فهمي لهذا الجزء تمامًا عند النظر إلى تعريفات الإعدادات:

composer_media_optimization_image_dimensions_resize_threshold: الافتراضي 1920
الحد الأدنى لعرض الصورة لتشغيل تغيير الحجم من جانب العميل

composer_media_optimization_image_dimensions_resize_target: الافتراضي 1920
سيتم تغيير حجم الصور التي يزيد عرضها عن composer_media_optimization_image_dimensions_resize_threshold إلى هذا العرض.
يجب أن يكون ≥ هذا الحد.

هذا الجزء بالتحديد:

يجب أن يكون ≥ هذا الحد.

ألا ينبغي أن يكون ≤ بدلاً من ذلك؟ لا أفهم لماذا سيتم تغيير حجمه إلى قيمة عرض أعلى من الحد:thinking:

أيضًا، في وصف نفس الإعداد، الاسم الأول للإعداد خاطئ:

composer_media_optimization_image_dimensions_resize_threshold
الاسم الصحيح هو “Composer media optimization image resize dimensions threshold” (“resize dimensions”، وليس “dimensions resize”).