browser-image-guard
بنيت browser-image-guard للتحقق من الصور المرفوعة ومعالجتها داخل المتصفح، بما في ذلك تحويل HEIC وإزالة بيانات EXIF وGPS الوصفية.
npm install browser-image-guardالمشكلة
أتعامل مع الملفات التي تحمل أنواع MIME مضللة، وصور HEIC التي قد لا تقبلها الواجهة الخلفية. وقد تحتفظ الصور عند رفعها ببيانات EXIF، ومنها إحداثيات GPS.
أضع في الحسبان فشل الضغط، ومتصفحات الهواتف القديمة التي قد تعلق في حالة التحميل، وقيود Content-Security-Policy التي قد تمنع تشغيل Web Worker.
طريقة الحل
أفحص البايتات المميِّزة (magic bytes) بدلًا من الاعتماد على ترويسة MIME. يحوّل مسار المعالجة HEIC/HEIF إلى JPEG، ويزيل بيانات EXIF وGPS بإعادة الترميز. كما يصحح اتجاه الصورة، ويغيّر أبعادها ويضغطها ضمن حدود الحجم، وينقّي أسماء الملفات.
أشغّل المعالجة داخل Web Worker عندما تسمح البيئة بذلك، مع الرجوع إلى الخيط الرئيسي عند تعذّر تشغيله. وتتيح الأخطاء محددة النوع للواجهة المستدعية الإبلاغ عن حالات فشل المعالجة.
أتيح processImage(file) كنقطة الدخول. تعيد الدالة صورة JPEG مضغوطة وجاهزة للرفع، أو تطرح خطأً محدد النوع.
النتيجة
أنشر المكتبة على npm في حزمة ESM تتضمن أنواع TypeScript. أمرّر الملف المحدد إلى processImage(file)، ثم أستخدم صورة JPEG التي تعيدها في عملية الرفع، وأعالج الأخطاء في الواجهة.