العربية

الصور والصور · أداة خصوصية البيانات الوصفية للصورة

كيف يقرأ المتصفح EXIF من JPEG دون تحميله

· كيف يعمل

exif خصوصية الصورة معالجة المتصفح تنسيقات الملفات

تتحول الصورة إلى بايتات محلية وJPEG مقاطع وحقول EXIF قابلة للقراءة داخل متصفح واحد
الرسم التوضيحي المتجه الأصلي ToolAcre

شرح تفصيلي لما يحدث فعليًا بين إسقاط JPEG على الصفحة ورؤية بيانات التعريف الخاصة بها: تتم قراءة البايتات محليًا، ويتم تحديد موقع المقطع APP1، ويتم فك تشفير الدلائل TIFF بداخله في JavaScript، دون الحاجة إلى خادم.

المطالبة بالاختبار: "لم يتم تحميل أي شيء" - لماذا يحتاج مفتش البيانات التعريفية فقط إلى قراءة البايتات الموجودة لديه بالفعل، وكيفية تأكيد عدم مغادرة أي طلب لعلامة التبويب

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

قراءة الملف محليًا باستخدام الملف API - كيف يقوم المتصفح بتسليم الأداة ArrayBuffer لصورتك دون مغادرة وحدات البايت للجهاز

يوفر منتقي الملفات كائن ملف المتصفح، ويجعل file.arrayBuffer() محتوياته متاحة لـ JavaScript الذي يعمل بالفعل في الصفحة. ToolAcre يفرض حدًا أقصى 50 MB، ثم يحدد JPEG، PNG أو WebP من البايتات نفسها. لا تحتاج هذه القراءة المحلية إلى إرسال نموذج أو نقطة نهاية لتحميل الصورة، ويمارس اختبار عزل الشبكة جميع التنسيقات الثلاثة المدعومة دون تسجيل طلب.

البحث عن المقطع APP1 — الانتقال من علامات JPEG من SOI إلى رأس 'Exif'، وتخطي المقاطع التي تحمل ICC أو XMP بدلاً من ذلك

بالنسبة إلى JPEG، يبدأ القارئ في العمل بعد علامة بداية الصورة ويتنقل عبر أجزاء العلامة حتى علامة بداية المسح. فهو يتعرف على الحمولات APP1 التي تبدأ بـ Exif ويقوم بتوزيعها، بينما يتم اكتشاف XMP فقط للإزالة ويتم الاحتفاظ بـ ICC عمدًا كبيانات عرض. ينتمي كل شيء بدءًا من علامة المسح الضوئي فصاعدًا إلى مسار الصورة المضغوطة بدلاً من تقرير EXIF.

فك تشفير الرأس TIFF و IFDs - ترتيب البايت (II أو MM)، والإزاحة إلى IFD0، وإدخالات 12 بايت التي تشير إلى الدلائل الفرعية Exif وGPS

تحتوي الحمولة EXIF على كتلة TIFF. يقرأ المحلل اللغوي علامة ترتيب البايت II أو MM، ويتحقق من القيمة السحرية TIFF ويتبع الإزاحة إلى IFD0. يوفر كل إدخال دليل علامة ونوعًا وعددًا وإما قيمة مضمنة أو إزاحة. من IFD0 تتبع التعليمات البرمجية فقط مؤشرات الدليل الفرعي Exif وGPS، مع الحفاظ على حدود الاجتياز بدلاً من مطاردة كل بنية خاصة محتملة.

تحويل قيم العلامات الأولية إلى حقول قابلة للقراءة - معرفات العلامات وأنواع البيانات والأساسيات وسلاسل ASCII ولماذا تحتاج بعض القيم إلى جدول بحث

تصبح القيم الأولية مفيدة فقط بعد تفسير أنواعها وعلاماتها. تصبح حقول ASCII سلاسل، وتستخدم الأنواع الرقمية ترتيب البايت TIFF، وتصبح الأزواج المنطقية أرقامًا بعد قراءة البسط والمقام. يقوم قاموس العلامات بتسمية نوع الكاميرا وطرازها والطوابع الزمنية والبرامج والحقول التسلسلية وقيم GPS، ثم يصنف الموقع وهوية الجهاز قبل المجالات الفنية الأقل حساسية.

مثال عملي: صورة هاتف تم تحليلها على الموضوع الرئيسي

وصف المصنف هذا المثال بأنه يعمل في Web Worker، لكن اللوحة التي تم شحنها تستدعي readMetadata مباشرة بعد انتظار file.arrayBuffer(); ولا يشارك أي عامل في هذا المسار. وبالتالي تتم قراءة الهاتف المحدد JPEG وتحليله في الموضوع الرئيسي للصفحة، وبعد ذلك تتم طباعة أي خط طول وخط عرض كأرقام ويتم عرض جدول الحقول الكامل. التصحيح مهم لأن المعالجة المحلية ومعالجة العمال هما مطالبتان مختلفتان.

ما لا يغطيه هذا — الأجزاء الداخلية لـ MakerNote، وتنسيقات RAW، وHEIC وحاويات الفيديو تقع خارج هذه الإرشادات وخارج الأداة

القارئ غير مكتمل عمدا. لا يقوم بفك تشفير الأجزاء الداخلية لـ MakerNote، IFD1 الحقول المصغرة، JPEG XMP المحتويات أو غير المدعومة RAW، HEIC، AVIF، TIFF، GIF و SVG حاويات. تم تخطي مقطع EXIF الفاسد لذا لا يمكن منع الإزالة لاحقًا. التقرير الفارغ يعني فقط أن هذا المحلل اللغوي المحدود لم يعثر على حقول قابلة للقراءة، وليس أن كل قناة معلومات محتملة غائبة.

الخلاصة: قراءة البيانات التعريفية هي مهمة محلية على مستوى البايت — تقوم أداة خصوصية البيانات الوصفية للصورة بهذا بالضبط، بحيث يمكنك فحصها قبل المشاركة دون الثقة في الخادم

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