PicScrub logoPicScrub
العودة إلى الصيغ

صيغة HEIC

High Efficiency Image Container

حاوية ISOBMFF

إن سبق أن تعاملت مع ملفات فيديو MP4، فستجد HEIC مألوفة. فقد اختارت Apple صيغة ISO Base Media File Format (اختصارًا ISOBMFF) حاويةً لـ HEIC، أي أنها تشترك في حمضها النووي مع صيغ الفيديو لا مع صيغ الصور التقليدية مثل JPEG أو PNG.

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

بنية ملف HEIC

ftyp
meta
mdat
ftyp
24 بايت
نوع الملف وعلاماته
meta
1000 بايت
حاوية البيانات الوصفية
mdat
طول متغيّر
بيانات الوسائط (HEVC)

ترويسة HEIC (صندوق ftyp)

حجم الصندوق (24)
نوع الصندوق (ftyp)
العلامة الرئيسية (heic)
الإصدار الفرعي
علامة متوافقة (mif1)
علامة متوافقة (heic)
OffsetHexASCII
0000
000000186674797068656963
....ftypheic
000C
000000006D69663168656963
....mif1heic

بنية الصندوق

الحجمالنوعالبيانات
4 بايت (BE)4 بايتالحجم - 8

إن كان الحجم = 1، فسيأتي بعد النوع حجم ممتد من 8 بايتات. وإن كان الحجم = 0، فالصندوق يمتد حتى نهاية الملف.

أهم الصناديق

قد يصبح تسلسل الصناديق في ملفات HEIC عميقًا. فعلى خلاف JPEG التي تجلس فيها البيانات الوصفية عند إزاحات متوقعة، تدفن HEIC بياناتها الوصفية تحت طبقات عدة من بنية متداخلة. وإليك كيف تتراصف الأجزاء الرئيسية.

ftyp:نوع الملف

أول صندوق في الملف. يحتوي على العلامة الرئيسية والعلامات المتوافقة، وهو إلزامي للتعرف على الصيغة.

العلامات المتوافقة: heic heix hevc hevx heim heis hevm hevs mif1 msf1

meta:حاوية البيانات الوصفية

تحتوي على كل البيانات الوصفية، بما فيها مواضع العناصر وخصائصها وارتباطاتها. وهنا تسكن بيانات EXIF/XMP.

meta (metadata container)
├── hdlr  (handler reference)
├── pitm  (primary item ID)
├── iloc  (item locations → offsets into mdat)
│   └── [item_id, offset, length] entries
├── iinf  (item info → find 'Exif' item)
│   └── infe entries with item types
├── iprp  (item properties)
│   ├── ipco (property container)
│   │   ├── hvcC  (HEVC decoder config)
│   │   ├── ispe  (image dimensions)
│   │   ├── colr  (ICC profile, offset+12)
│   │   ├── Exif  (EXIF in TIFF format)
│   │   └── pixi  (pixel information)
│   └── ipma (property associations)
└── iref  (item references)

mdat:بيانات الوسائط

تحتوي على بيانات الصورة المرمّزة بـ HEVC. ويوفر صندوق iloc داخل meta الإزاحات المؤدية إلى mdat.

البيانات الوصفية في HEIC

إن كنت معتادًا على علامات APP في JPEG، فإن HEIC تسلك مسلكًا مختلفًا. فبدل علامات متتالية في بداية الملف، تسكن البيانات الوصفية على هيئة "خصائص عناصر" داخل صندوق meta. أما بيانات EXIF نفسها فما زالت بصيغة TIFF المألوفة، لكن العثور عليها يتطلب التنقل في تسلسل الصناديق أولًا.

خاصية EXIF

تُخزَّن في ipco (حاوية خصائص العناصر) بالنوع "Exif". وتحتوي على بيانات EXIF المعيارية بصيغة TIFF، تمامًا كما في JPEG.

خاصية XMP

بيانات وصفية قائمة على XML، تُخزَّن كخاصية من نوع "mime" بنوع محتوى "application/rdf+xml".

ملف ICC

ملف ألوان يُخزَّن في صندوق "colr" بالنوع "prof".

لماذا تهم الإزاحات

يحتوي صندوق iloc على إزاحات بايتات دقيقة تشير إلى داخل mdat. فإن تغيّر حجم أي صندوق (بإزالة بيانات وصفية مثلًا)، وجب إعادة حساب هذه الإزاحات وإلا أصبح الملف غير قابل للقراءة.

إخفاء الهوية دون فقدان

وهنا تصبح HEIC شائكة. فقد صُممت الصيغة لتخزين الفيديو والصور بكفاءة، لا لتسهيل التلاعب بالبيانات الوصفية.

التحدي

بنية HEIC القائمة على الإزاحات تجعل حذف البايتات محفوفًا بالمخاطر. فصندوق iloc يحتوي على إزاحات بايتات دقيقة تشير إلى داخل mdat، وإن حذفت صندوقًا واحدًا فقط أصبحت تلك الإزاحات خاطئة ولم تعد الصورة تُفتح.

أسلوب الكتابة بالأصفار

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

Before: [Exif][GPS Data: 37.7749, -122.4194][Camera: iPhone]
After:  [Exif][0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00...]

لماذا الكتابة بالأصفار؟

  • • تحافظ على سلامة الملف:تبقى كل الإزاحات صحيحة
  • • بلا إعادة ضغط:بيانات الصورة لا تُمس
  • • البيانات الوصفية تُتلَف:الأصفار لا تحمل أي معلومة
  • • هل يمكن التراجع؟:لا، فما كُتب فوقه ضاع

كيف يعالج PicScrub ملفات HEIC

1

تحليل بنية الصناديق

تحليل ftyp وmeta تحليلًا تعاوديًا وتحديد كل الصناديق

2

تحديد موضع البيانات الوصفية

العثور على خاصيتَي Exif وXMP داخل حاوية ipco

3

تصفير محتوى البيانات الوصفية

الكتابة بالأصفار فوق محتوى صناديق البيانات الوصفية

4

الحفاظ على البنية

الإبقاء على ترويسات الصناديق وأحجامها وكل الإزاحات كما هي

ملاحظة عن حجم الملف

لأن PicScrub يكتب أصفارًا بدل الحذف، فسيكون حجم الملف الناتج مساويًا لحجم الملف الأصلي. فمساحة البيانات الوصفية تبقى كما هي لكنها تُملأ بالأصفار.

المدخل: 2.5 ميغابايت (مع 50 كيلوبايت من EXIF)
الناتج: 2.5 ميغابايت (50 كيلوبايت من الأصفار)

HEIC وHEIF وAVIF

التسميات مربكة، فلنوضحها. HEIF هي صيغة الحاوية، أما HEIC وAVIF فتصفان المرمّز المستخدم في ضغط الصورة داخل تلك الحاوية.

الصيغةالحاويةالمرمّزالاستخدام
HEICHEIFHEVC (H.265)أجهزة Apple
HEIFHEIFمتعددحاوية عامة
AVIFHEIFAV1الويب (بلا رسوم ترخيص)

الثلاثة تستخدم بنية الحاوية ISOBMFF/HEIF نفسها، ولذلك ينجح أسلوب PicScrub معها جميعًا.