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

click fraud protection

اكتشف ما إذا كانت جودة الضغط السيئة في Instagram لنظام Android هي نتيجة لقيود النظام الأساسي أو العمل المتعمد لمطوري Instagram.

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

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

نظرة مباشرة

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

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

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

ضغط

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

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

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

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

ذاكرة VSCO وAndroid

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

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

عندها تعلمنا من خلال الدعم الفني لشركة VSCO أن سبب فقدان الدقة والدقة لم يكن سوء تنفيذ البرنامج، بل كان قيود الذاكرة في أجهزة Android:

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

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

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

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

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

القيد

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

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

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

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

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

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

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

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

ولكن كان هناك حد أقصى لحجم الكومة، بالرغم من ذلك!

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

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

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

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

خاتمة

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

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

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

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