نظرة على جودة ضغط Instagram

أصبح تطبيق Instagram لنظام Android أحد أكثر منصات الوسائط الاجتماعية شهرة في العالم اليوم. مع وجود أكثر من 300 مليون مستخدم شهريًا عبر جميع المنصات ، وأكثر من 100 مليون تنزيل فردي على متجر Google Playstore ، تتوقع أن يتسم تطبيق مشاركة لقطة Facebook على الجودة بكل من التصميم والوظائف. لسوء الحظ ، بالنسبة لجزء كبير من قاعدة المستخدم الخاصة به - أي instagrammers Android - فإن Instagram تقصر في القيام بعمل جيد في الشيء الوحيد المفترض أن تفعله - مشاركة الصور الجميلة.

على الرغم من أن مستخدمي iOS يمكنهم مشاركة إبداعاتهم ولحظاتهم بأمانة عالية ، إلا أن مستخدمي أندرويد يبلغون عن خسائر جسيمة في صورهم لسنوات حتى الآن. تم العثور على واحدة من أقدم الخيوط التي تشكو من مثل هذا الصداع هنا في سبتمبر 2012 ، وكان الخيط يعمل حتى الآن ، مما يوفر للقراء طرقًا غير تقليدية لمحاولة الالتفاف على إتلاف صور Instagram السخيف. كنت تعتقد أنه بعد أكثر من عامين من الشكاوى والتحسينات التكنولوجية في كل من البرامج والأجهزة والنمو الاقتصادي والسوقي ، كان Instagram قد عالج هذه المشكلات. هل هو شيء يجب إلقاء اللوم عليه؟ أو هل السبب الكامن وراء المشكلة أعمق مما يبدو؟

نظرة مباشرة

أصلي

1: 1 المحاصيل

إليكم صورة التقطتها بنفسي. يبلغ وزن الصورة الأصلية 4.34 ميجابايت وتم التقاطها بسرعة 9.6 ميجابكسل . لكي لا تأخذ في الاعتبار الاختزال "Instacrop" الذي من شأنه أن يدمر تفاصيل هذا الملف عالي الدقة بشكل مفهوم عن طريق تقليص حجمه لاحقًا إلى ناتج Instagram الأصلي بحجم 640 × 640 بكسل ، قمت بقصه إلى JPG من نسبة العرض إلى الارتفاع 1: 1 لـ Instagram تحميلات لمعرفة التأثيرات المباشرة لخوارزمية ما بعد المعالجة وضغطها على هذا الملف.

أنا ببساطة أمسك بملف JPG التربيعي ونشره على Instagram الخاص بي دون أي عوامل تصفية إضافية أو تأثيرات أو تغيير أي قيم. كنت تتوقع أن تظهر الصورة بشكل مشابه إلى حد ما لما شوهد في الأصل ، لكن النتيجة كانت مخيبة للآمال. تعتبر القطع الأثرية حول الحدود وتدرجات الألوان ملحوظة بشكل مذهل حتى بالنسبة للعين غير المدربة. بينما كان حجم ملف اقتصاص 1: 1 الأصلي 1.6 ميجابايت ، فإن الصورة الجديدة التي تم تغيير حجمها وضغطها هي 125 كيلو بايت . هذا يعني أن الضغط قد قلل من حجم الملف الأصلي بمعامل حوالي 13 - وهذا ليس بالضرورة سيئًا في بعض السياقات.

ومن المثير للاهتمام ، أن Instagram يقدم "معالجة صور عالية الجودة" يتم إيقاف تشغيلها افتراضيًا ، ولكن عند تشغيلها ، لا يبدو أن النتائج تتحسن حقًا ، ويبلغ حجم الملف المضغوط 129 كيلو بايت . أنا هنا أقدم لك نفس المحصول ، ويمكنك أن ترى أن ضغط الانضغاط ما زال مكثفًا إلى حد ما وأن دقة الصورة لا تزال تتميز بفقدان خشن وبكسل.

مضغوط ث / معالجة عالية الجودة معطلة

مضغوط ث / معالجة عالية الجودة ON

ضغط

توفر خوارزميات الكمبيوتر طرقًا متعددة لتقليل حجم الصورة باستخدام تقنيات مختلفة لتحسين الصورة

البيانات المطلوبة في وقت لاحق يتم تفسيرها وعرض الصورة المناسبة بالطريقة المناسبة. ترتبط العديد من أنواع ملفات الصور ارتباطًا وثيقًا بتقنيات الضغط هذه التي تدعمها أو لا تدعمها - ولهذا السبب عادة ما نرى جودة أفضل في بعض أنواع الصور أكثر من غيرها. عادةً ما تستخدم ملفات PNG (رسومات الشبكة المحمولة) لمشاركة الوسائط دون فقد الدقة وجودة الصورة ، على حساب حجم ملف أكبر من الصور التي تخضع لضغط ضياع. GIF هو تنسيق صورة قديم جدًا يتم ضغطه أيضًا بلا ضياع.

يتعلم العديد من المبرمجين تقنيات تقليل أو تحسين حجم الملف في مساعيه الأكاديمية بصرف النظر عن المجال الذي سيطورون فيه. أسماء مثل الانكماش (تستخدم في PNG ) أو خوارزمية Lempel-Ziv-Welch (تستخدم عادةً في GIF ) العديد من الفصول الدراسية في علوم الحاسب الآلي في الوقت الحاضر ، تدقق في آذان العديد من المبرمجين ، ومع المزيد من التطوير والتوثيق لتقنيات الضغط الأكثر فاعلية بشكل متزايد ، تتوقع من منصة الملياردير أن تدمج خوارزميات تتسم بالكفاءة المعقولة لإخراج صورة جميلة للغاية مع جعل التقنيات غير ملائمة فرض ضرائب كبيرة على خوادمهم وأجهزة المستخدم.

لكن هذا ببساطة ليس هو الحال. تتناقض الصور التي يلتقطها أنا و Instagrammers مع الملايين من Instagrammers كل يوم بشكل مباشر مع رواية البراعة الهندسية لهذه القوى العظمى في عالم التكنولوجيا ، والذين من المفترض أن يضخوا جزءًا كبيرًا من إيراداتهم في الاستثمار مرة أخرى في برامجهم لتوفير أفضل تجربة للمستخدم. ولكن لا يزال هناك سؤال لم تتم الإجابة عليه هنا: لماذا Android وليس iOS؟

VSCO وذاكرة أندرويد

بينما كانت منتديات الإنترنت الشهيرة مثل رديت تحاول معرفة سبب غضبهم اليومي ، بدا أن الظلم ليس له أي أساس منطقي بخلاف التفسير المحتمل لجهاز أندرويد كونه أدنى في قسم الطاقة الحاسوبية ، أو حقيقة ذلك ، مجموعة واسعة من أجهزة أندرويد المنخفضة ، يجب اتخاذ هذه التدابير لضمان تجربة مستخدم متسقة عبر النظام الأساسي بأكمله - بغض النظر عن المبلغ الذي دفعته لهاتفك. مع مرور الأشهر ، استمرت التقارير بعد كل تحديث لـ Instagram في الإبلاغ عن نفس المشكلة ، إلى الحد الذي أصبحت فيه هذه المشكلة هفوة مستمرة بين مستخدمي المنتدى الذين تبعوا بعد قليل كل تكرار للتطبيق.

كما لاحظ المستخدمون حدوثًا مشابهًا مع تطبيق تحرير الصور والكاميرا VSCO Cam الشهير. توصف بأنها "المعيار الجديد لتصوير أندرويد فوتوغرافي" ، سارع البعض إلى ملاحظة أن التطبيق لم يصل إلى هذه المطالبات. كانت خسارة الجودة ونوع القطع الأثرية التي لوحظت مماثلة لتلك الموجودة في Instagram ، لذلك سارع البعض إلى الاعتقاد بوجود خط يوحد النقاط. حتى الآن ، كان لدينا فقط تكهنات بشأن سبب هذه المشكلة. ألوم البعض المشكلة مباشرة على خوارزميات الصور النقطية المدمجة في Android. ومع ذلك ، فإن ما يبدو أنه السبب الأكثر إلحاحًا الذي ظهر على السطح هو الحقيقة البسيطة المتمثلة في أن Instagram ، وربما VSCO ، كان له تنفيذ ضعيف لخوارزمية الاختزال ، وتحديداً أقرب أخذ عينات من الجار. لكن بدون الكلمة الرسمية من المطورين ، لا يمكن تأكيد المضاربة بشكل كامل.

عندها تعلمنا من خلال الدعم التقني لـ VSCO أن سبب فقدان الدقة والإخلاص لم يكن تنفيذًا سيئًا للبرنامج ، بل كان قيدًا على الذاكرة في أجهزة Android:

"معظم أجهزة Android مقيدة تمامًا في الذاكرة على الرغم من امتلاك بعضها لأعلى من بضع غيغا بايت من الذاكرة ، ولكن لا يُسمح للتطبيقات باستخدام كل تلك الذاكرة المتوفرة وبالتالي يتعين علينا أن نستحق ما يعطانا من Android."

"قد يتم تصغير الصور الكبيرة بنسبة تصل إلى 50٪ عند الاستيراد اعتمادًا على الجهاز الذي تستخدمه والذاكرة المتوفرة. "

يزعمون أيضًا أن تقنيات معالجة الصور الخاصة بهم يتم فرض ضرائب كبيرة على كل من الذاكرة و SoC ، وهذا ، إلى جانب قيود ذاكرة Android ، هو السبب في أننا نرى عنق الزجاجة الذي لا نعثر عليه في نظام التشغيل iOS.

وفقًا لمقالات تدريب مطوري Android ، يتم تعيين حد ثابت على حجم الكومة لكل تطبيق للحفاظ على بيئة وظيفية متعددة المهام. يعتمد هذا على مقدار ذاكرة الوصول العشوائي المتاحة للجهاز ، وإذا اقترب التطبيق من سعة الكومة ، فسيواجه خطر نفاد ذاكرة الوصول العشوائي.

لذا للوهلة الأولى ، يبدو أن قصة VSCO مقنعة ، لكن هذا لا يفسر بعض الأشياء التي لا يمكن أن يبدو أن الأشخاص الذين يتبعون نهج المشككين يتخلصون منها.

تحديد

بنظرة سطحية للغاية ، يمكننا أن نطرح هذا السؤال: إذا كان الهاتف الذكي الذي يتراوح حجمه بين 1 غيغابايت و 2 غيغابايت من ذاكرة الوصول العشوائي وأحدث معالجات محمولة لا يمكنه معالجة صورة بدقة كاملة ، لماذا كاميرات 32 ميغابايت من ذاكرة DSLR قادرة على ذلك؟

لقد تواصلنا مع أحد المطورين الكبار المعترف بهم لجمع رأي أقوى حول هذه المشكلة. علق المطور OmniROM XpLoDWilD:

"القيد هنا هو بالأحرى الطريقة التي يتم بها حساب الصورة أو معالجتها. يعد GPU أسرع من ذلك ، وأسرع طريقة للقيام بذلك هي "تحميل" الصورة إلى GPU كملمس ومعالجتها - المشكلة في كونك مقيدًا بحد أقصى حجم نسيج GPU ، وهو 4096 عمومًا × 4096 ".

بشكل عام ، تبلغ دقة الصور بدقة 8 ميجابكسل 3264 × 2448 ، وهي صغيرة بما يكفي لتتوافق مع الحدود التي تصل إلى 12 ميجابكسل من 4000 × 3000. يمكن لمستشعرات الرائد وهاتف الكاميرا الأحدث ارتفاعًا يصل إلى 13 ميجابكسل ولديها أحجام صور أكبر من الحد الأقصى لحجم نسيج وحدة معالجة الرسومات (GPU) ، والتي ستحتاج حتماً إلى تقليل حجم الصورة داخل القيد وفقدان التفاصيل الإجمالية.

"لا تكمن المشكلة في أن التطبيقات تحمِّل إصدارًا مصغرًا ، ومع ذلك ، فهي تعالج التطبيقات إصدارًا مصغرًا من الصورة وتحميل ذلك الملف المعالج" ، أضاف. "على الأرجح ، من أجل تقليل وقت المعالجة إلى أبعد من ذلك ، فقد قاموا أيضًا بتعيين دقة أقل".

يقترح XpLoDWilD أن التوازن الدقيق بين وقت المعالجة وقيود GPU سيكون ، بدلاً من إظهار للمستخدم معاينة تمت معالجتها بالكامل للصورة التي يعملون عليها ، أن يكون المساعد البصري لعملية التحرير صورة مصغرة مصغرة يمكن وضعها على الشاشة (شيء أصغر من 2048 × 2048). يمكن معالجة هذه الصورة المصغرة بشكل سريع بشكل موثوق ، مع إعطاء المستخدم تقديرًا جيدًا لكيفية ظهور الصورة. عندما يؤكد المستخدم الخيارات التي اتخذها بشأن ضبط القيمة واختيار المرشح ، سيتم تحويل الصورة ذات الدقة الكاملة في الخلفية - عن طريق تقسيم الصورة في شبكة بحجم دقة وضوح الصورة المصغرة ، ثم معالجة كل كتلة على حدة. تستلزم الخطوة الأخيرة تكوين الصورة النهائية على وحدة المعالجة المركزية عن طريق ملائمة كل منطقة في صورة نقطية واحدة كاملة الدقة.

هذه هي إحدى الطرق لمعالجة الصورة في الدقة الأصلية. هذا شيء لا يبدو أن Instagram يقوم به ، نظرًا لأن المعاينة التي تراها ، حتى اللحظة التي تقوم فيها بمعالجة الصورة ، لا تتميز بنفس الجودة والقطع الأثرية الرهيبة للتجميع الجاهز للتحميل صورة. لا يبدو أن صورة المعاينة تخضع للضغط الوحشي ، لذلك يحدث الضغط في لحظة معالجة الصورة النهائية - والتي تقوم بإخراج الصورة ذات الجودة المنخفضة.

لا توجد مشكلة في نظام Android في معالجة صورة بدقة عالية وبدون تحميلها. على جانب الجهاز ، تحتوي أحدث أجهزة iPhone على الحد الأقصى لحجم الملمس من 2048 إلى 4096. لذا ، فربما لا يكون ذلك بمثابة قيود على الأجهزة ، كما أنه ليس قيدًا على النظام الأساسي - حيث يمكن للمطورين الآخرين حل هذه المشكلة.

ولكن كان هناك سقف لحجم الكومة ، على الرغم من!

نعم لكن ليس تماما يوجد حد معقول على كومة Java ، بسبب الذاكرة الإضافية اللازمة للصور عالية الكثافة. بعد إجراء بعض الأبحاث ، وجدت مقتطف المناقشة هذا على مجموعة Google تناقش Android NDK أو Native Development Kit ، والتي تتيح للمطورين إعادة استخدام التعليمات البرمجية المكتوبة في C / C ++ عن طريق إدخالها في التطبيقات من خلال Java Native Interface ، مما يجعل تنفيذ التطبيق أسرع بعض الشيء حيث يتم تفسيره مباشرة على المعالج بدلاً من جهاز افتراضي.

في المحادثة ، التي يمكن العثور عليها هنا ، يزيل مهندس Google ومطور Android Framework Dianne Hackborn بعض المفاهيم الخاطئة حول قيود ذاكرة Android. وتشير إلى أنه "نظرًا لأن هذه قائمة NDK ، فإن الحد لا يُفرض عليك في الواقع ، لأنه فقط على كومة Java. لا يوجد حد للتخصيصات في الكومة الأصلية ... " . وفيما يتعلق باستخدام ذاكرة الوصول العشوائي ، تعلق قائلاً: "إذا كان هناك عدد كاف من ذاكرة الوصول العشوائي ، فسيتم حفظ البيانات في ذاكرة الوصول العشوائي. إن لم يكن ... حسنا ، أنت لا تزال تعمل ".

كما تقول إنه لا يوجد حد للكوام الأصلي فقط ، ولكن لا يوجد حد لكومة GPU. لذلك يبدو أنه لا توجد قيود "مفروضة" من قبل Android ككل على مقدار الذاكرة أو المعالجة العامة أو وحدة معالجة الرسومات التي يمكنك استخدامها بسبب وجود NDK.

ولكن حتى ذلك الحين ، يجب أن تكون كومة Java كبيرة بما يكفي لصورة واحدة

. صورة 13MP كصورة نقطية غير مضغوطة (ARGB 8888) يستغرق حوالي 50 ميغابايت . يتراوح الحد الأقصى لحجم كومة الذاكرة المؤقتة إلى 256 ميجابايت أو 512 ميجابايت اعتمادًا على جهاز Android وإصدار Android الذي يعمل به. يستغرق Instagram حوالي 62 ميجابايت عند الخمول ، واستناداً إلى الرسم البياني الخاص بي مراقب النظام ، يبدو أن استخدام ذاكرة الوصول العشوائي أثناء الاستعادة ومعالجة صورة 13 ميجابيكسل لا يكاد يذكر ، ومن المؤكد أنه ليس قريبًا من إغلاق الحد المفترض "المفروض بواسطة Android" ، والذي يمكن حلها بغض النظر ، ويمكن أيضًا تجنبها أو تخفيفها باستخدام خوارزميات معينة على غيرها.

خاتمة

كما ذكرنا سابقًا ، قد لا نعرف أبدًا القصة الكاملة لما يجري وراء الكواليس في هذه التطبيقات. لكن التبريرات التي قدمتها استجابات صناعها أو استجابات المدافعين عنها لا تبدو بكل بساطة معقولة عند التفتيش الدقيق. يبدو أن المشكلة هنا ناتجة عن تنفيذ برنامج متوسط ​​بدلاً من أي قيود قد توفرها أجهزة أو برامج Android على ما يبدو.

يبدو أن هناك تطبيقات تعمل على التغلب على الضغط ، بالإضافة إلى وجود ومحتوى الوثائق المتعلقة بالأعمال الداخلية لنظام أندرويد ، وإمكانات أجهزة Android الحالية ورأي الخبراء ، كلها تشير إلى الظلم الذي يواجهه مستخدمي Android ، إما متعمدة أو على الأقل قابلة للحل.

أعتقد أن الوقت قد حان لمستخدمي Android ليس فقط للحصول على الحقيقة ، ولكن أيضًا للمعاملة التي يستحقونها. على الرغم من أن أجهزة Android ، بشكل جماعي ، كمتوسط ​​ومتوسط ​​، تكون أقل من أجهزة iPhone عندما يتعلق الأمر بالأجهزة ، لا يوجد سبب لخفض المعايير وإفساد تجربة كل مستخدم. ومع قيام كل مطور بإعطاء النظام الأساسي بقايا الطعام المستعملة ، يركز المستخدمون بشكل متزايد على إحباطهم على المطورين بدلاً من النظام - كما ينبغي أن يكون.

الائتمان ل PixelPulse لصورة مميزة