المدونة / هندسة

لماذا قد تكون الصورة المرممة ملفًا أكبر من المسح الضوئي

· تقرير قياس · البيانات: مقارنة مشفّرات الإنتاج

بدأت هذه التدوينة بملاحظة من مستخدم: كان التنزيل المرمم أكبر من الصورة التي رفعها، وهو ما يبدو بديهيًا خطأً في «إصلاح». وجد القياس سببين مستقلين: أحدهما هو المنتج يعمل كما هو مقصود، والآخر كان هدرًا حقيقيًا أزلناه بعد ذلك.

السبب 1: المخرج يحمل فعلًا نحو 6× من البكسلات

يشمل الترميم تحسينًا للصورة كاملة: مسح ضوئي نموذجي بأبعاد 821×1024 (0.84 ميغابكسل) يعود بأبعاد 2052×2560 (5.25 ميغابكسل)، أي 6.25× عدد البكسلات، مع تفاصيل مولَّفة حقيقية في تلك البكسلات، لا نسخ ممددة. معلومات أكثر، بايتات أكثر. هذا الجزء هو الميزة.

8211024
الملف المرفوع0.84 MP
20522560
المخرج المرمم5.25 MP
الشكل 1. مدخل ومخرج الترميم نفسه، مرسومان بالمقياس. يحمل المخرج 6.25× من بكسلات الملف المرفوع.

السبب 2: مشفّرات PNG في المتصفحات منتفخة بنسبة 20–40%

الجزء المهدر: كان التطبيق في الأصل يشفّر التنزيلات في المتصفح بمشفّر PNG المدمج في واجهة canvas. وبالمقارنة مع مشفّر تحسيني محترم بأقصى إعدادات بلا فقدان، أنتج مشفّر canvas ملفات أكبر بنسبة 20–40% لمخرج متطابق البكسلات. PNG بلا فقدان في الحالتين؛ والبايتات الإضافية لم تشترِ شيئًا.

الشكل 2. البكسلات المرممة نفسها، مشفّرة بطريقتين. التشفير بأقصى ضغط مع ترشيح تكيفي قلّص الملف بنسبة 45% دون أي فرق في الجودة؛ PNG بلا فقدان في الحالتين.

يشفّر الخادم الآن ملف PNG الناتج مرة واحدة بأقصى ضغط بلا فقدان، ويعيد العميل استخدام تلك البايتات بعينها للتنزيل بدلًا من إعادة التشفير عبر canvas. إعادة الاستخدام صحيحة بحكم البناء: الكائن الثنائي المنزَّل هو نفسه الذي رُسمت منه لوحة الرسم، فلا يمكن للبكسلات أن تختلف.

ما لم نفعله عمدًا

لم نضف صيغ مخرجات فاقدة سعيًا وراء رقم أصغر. الترميم نسخة أرشيفية، لذا يسلّمك زر التنزيل PNG ولا شيء غيره؛ ولم يبقَ مكسب مجاني بلا فقدان يمكن جمعه في JPEG أو WebP. أما الصور المعالجة في وضع الاحتياط على الجهاز فتحتفظ بمشفّر المتصفح؛ تلك التشغيلات لا تلمس خوادمنا على الإطلاق.

الخلاصة العملية

إن كان ملفك المرمم أكبر من مسحك الضوئي، فتحقق من أبعاده بالبكسل قبل افتراض الهدر: عند 6× من البكسلات، الملف الأكبر إلى حد ما هو النتيجة المتوقعة، والملف الأصغر كان سيعني أن تفاصيل قد أُهدرت.