هل هناك طريقة لاستنتاج تنسيق الصورة للملف، دون قراءة الملف بأكمله؟

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

سؤال

هل هناك طريقة جيدة لمعرفة تنسيق الصورة، دون الحاجة إلى قراءة الملف بأكمله في الذاكرة؟

من الواضح أن هذا سيختلف من تنسيق إلى آخر (أنا مهتم بشكل خاص بملفات TIFF) ولكن ما نوع الإجراء الذي قد يكون مفيدًا لتحديد نوع تنسيق الصورة للملف دون الحاجة إلى قراءة الملف بأكمله؟

علاوة:ماذا لو كانت الصورة عبارة عن سلسلة مشفرة بـ Base64؟هل هناك طريقة موثوقة لاستنتاجها قبل فك تشفيرها؟

هل كانت مفيدة؟

المحلول

تحتوي معظم تنسيقات ملفات الصور على وحدات بايت فريدة في البداية.يونكس file ينظر الأمر إلى بداية الملف لمعرفة نوع البيانات التي يحتوي عليها.راجع مقالة ويكيبيديا على الأرقام السحرية في الملفات و Magicdb.org.

نصائح أخرى

بالتأكيد هناك.كما ذكر الآخرون، تبدأ معظم الصور بنوع من "السحر"، والذي سيتم ترجمته دائمًا إلى نوع ما من بيانات Base64.فيما يلي بعض الأمثلة:

ستبدأ الصورة النقطية بـ Qk3

سيبدأ ملف Jpeg بـ /9j/

سيبدأ ملف GIF بـ R0l (هذا صفر كالحرف الثاني).

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

أيضاً file في سطر الأوامر *nix أو قراءة البايتات الأولية للملف.تأتي معظم الملفات برأس فريد في البايتات القليلة الأولى.على سبيل المثال، يبدو رأس TIFF كما يلي:

0x00000000: 4949 2a00 0800 0000
لمزيد من المعلومات حول تنسيق ملف TIFF على وجه التحديد إذا كنت تريد معرفة ما تمثله هذه البايتات، فانتقل هنا.

يتوفر موقع شامل لتنسيقات الملفات على:

http://www.wotsit.org

ستبدأ ملفات TIFF إما بـ II أو MM (ترتيب بايت Intel أو Motorolla).
يمكن تنزيل مواصفات TIFF 6 هنا وليس من الصعب جدًا متابعته

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top