Exifinterface

قراءة علامات EXIF لملفات الصور وكتابتها
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫3 ديسمبر 2025 1.4.2 - - -

تحديد الاعتماديات

لإضافة اعتمادية على Exifinterface، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.

أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:

Groovy

dependencies {
    implementation "androidx.exifinterface:exifinterface:1.4.2"
}

Kotlin

dependencies {
    implementation("androidx.exifinterface:exifinterface:1.4.2")
}

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات البناء.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مكتبة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.4

الإصدار 1.4.2

‫3 ديسمبر 2025

تم طرح androidx.exifinterface:exifinterface:1.4.2. يتضمّن الإصدار 1.4.2 هذه التعديلات.

إصلاح الأخطاء

  • إتاحة تحليل ملفات JPEG مع بايتات 0xFF إضافية (مسموح بها) قبل أي علامة

الإصدار 1.4.1

‫23 أبريل 2025

تم طرح androidx.exifinterface:exifinterface:1.4.1. يتضمّن الإصدار 1.4.1 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح الخطأ الذي كان يتسبّب في ظهور استثناء عند تمرير قيمة فارغة إلى setAttribute في TAG_XMP.

الإصدار 1.4.0

‫26 فبراير 2025

تم طرح androidx.exifinterface:exifinterface:1.4.0. يتضمّن الإصدار 1.4.0 هذه التعديلات.

الإصدار 1.4.0-rc01

‫29 يناير 2025

تم إصدار androidx.exifinterface:exifinterface:1.4.0-rc01 بدون أي تغييرات منذ الإصدار التجريبي 01. يتضمّن الإصدار 1.4.0-rc01 هذه التعديلات.

الإصدار 1.4.0-beta01

‫15 يناير 2025

تم طرح androidx.exifinterface:exifinterface:1.4.0-beta01. يتضمّن الإصدار 1.4.0-beta01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تعديل طريقة التعامل مع HEIC XMP لتفضيل بيانات XMP من جزء منفصل في الملف، بدلاً من العلامة 700 في بيانات Exif

إصلاح الأخطاء

  • إصلاح طريقة ExifInterface.getThumbnail*() لتعمل بشكل صحيح بعد إجراء طلب إلى saveAttributes() (في السابق، كانت الطلبات تنجح، ولكن كانت النتيجة غير صحيحة أو غير محدّدة)
  • تم إصلاح معالجة PNG XMP لقراءة وكتابة جزء iTXt XMP المنفصل بدلاً من العلامة 700 داخل جزء eXIf.
  • تم إصلاح مشكلة تلف صور WebP عند التعامل مع ملفات صور تتضمّن بيانات غير WebP في نهايتها. (b/385766064).

الإصدار 1.4.0-alpha01

‫13 نوفمبر 2024

تم طرح androidx.exifinterface:exifinterface:1.4.0-alpha01. يتضمّن الإصدار 1.4.0-alpha01 هذه التعديلات.

الميزات الجديدة

  • إتاحة قراءة بيانات XMP من صور HEIF
  • إتاحة قراءة بيانات Exif وXMP من صور AVIF

تغييرات واجهة برمجة التطبيقات

  • يجب الإشارة إلى أنّ المَعلمة location الخاصة بـ setGpsInfo هي @Nullable وأنّ تمرير null سيؤدي إلى عدم تنفيذ أي عملية. (If924c، b/236484611)

إصلاح الأخطاء

  • مواصلة تحليل البيانات بعد مواجهة إزاحة IFD غير صالحة (b/264729367)
  • التعامل مع صور WebP التي تحتوي بشكل غير صحيح على علامة JPEG APP1 قبل بيانات Exif (b/281638358)
  • تأكَّد من أنّ التغييرات في XMP في ملفات JPEG التي تتضمّن جزء XMP منفصلاً يتم تخزينها في جزء XMP المنفصل نفسه من خلال saveAttributes()، بدلاً من كتابتها في علامة TIFF/Exif رقم 700 التي لا تتوافق مع مواصفات XMP والتي لن تعثر عليها العديد من الأدوات.
  • تجنُّب تكرار بيانات XMP من مقطع منفصل في دليل معاينة TIFF عند الحفظ (b/309843390)
  • تحسين دقة عمليات التحويل من النوع double إلى النوع rational (b/312680558).
  • قبول التنسيق النسبي (x/y) لـ setAttribute من أجل العلامات النسبية "القديمة" التي يتم تحويلها تلقائيًا إلى تنسيق عشري عند إرجاعها من getAttribute (b/312680558)
  • تأكَّد من كتابة بيانات XMP المُضافة إلى صورة JPEG لا تحتوي على XMP في جزء منفصل، كما هو محدّد في مواصفات XMP. تم توثيق ExifInterface على أنّه يفضّل استخدام XMP في علامة Exif 700 في صور JPEG (ما يخالف المواصفات)، لذا يتم الاحتفاظ بهذا السلوك عند قراءة/كتابة الصور التي تتضمّن بيانات XMP حالية.
  • تم إصلاح مشكلة تلف الناتج عند كتابة صور WebP بارتفاع أو عرض أكبر من 8191 بكسل (b/342697059).
  • تستخدم هذه المكتبة الآن تعليقات توضيحية بشأن القيم الخالية في JSpecify، وهي تعليقات توضيحية خاصة بالاستخدام. على مطوّري Kotlin استخدام وسيطة المترجم البرمجي التالية لفرض الاستخدام الصحيح: -Xjspecify-annotations=strict (هذه هي القيمة التلقائية بدءًا من الإصدار 2.1.0 من مترجم Kotlin البرمجي). (I5cd0f، b/326456246)
  • تمت إزالة التحديد اليدوي لنطاق الوصول إلى واجهات برمجة التطبيقات الجديدة للمنصة، لأنّ ذلك يحدث تلقائيًا من خلال تصميم واجهة برمجة التطبيقات عند استخدام R8 مع الإصدار 7.3 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 3.3 من R8)، وجميع عمليات الإنشاء عند استخدام الإصدار 8.1 أو إصدار أحدث من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (مثل الإصدار 8.1 من D8). ننصح العملاء الذين لا يستخدمون AGP بالترقية إلى الإصدار 8.1 أو إصدار أحدث من D8. يُرجى مراجعة هذه المقالة للاطّلاع على مزيد من التفاصيل. (If6b4c، b/345472586)

الإصدار 1.3.7

الإصدار 1.3.7

‫13 كانون الأول (ديسمبر) 2023

تم طرح androidx.exifinterface:exifinterface:1.3.7. يتضمّن الإصدار 1.3.7 هذه التعديلات.

إصلاح الأخطاء

  • طرح استثناء من ExifInterface.saveAttributes() عند محاولة كتابة جزء JPEG APP1 كبير جدًا (في السابق، كنا نكتب جزء APP1 غير صالح بطول غير صحيح ومقتطع:(b/263747161)). مواصلة التحليل بعد مواجهة إزاحة غير صالحة في دليل بيانات الصورة (IFD) (في السابق، كان التحليل يتوقف على الفور، ما قد يؤدي إلى عرض قيم غير صحيحة: (b/264729367)).

الإصدار 1.3.6

الإصدار 1.3.6

‫8 فبراير 2023

تم طرح androidx.exifinterface:exifinterface:1.3.6. يتضمّن الإصدار 1.3.6 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة قراءة وحدة بت ألفا من أجزاء WebP VP8L (b/255405635).

الإصدار 1.3.5

الإصدار 1.3.5

‫24 أكتوبر 2022

تم طرح androidx.exifinterface:exifinterface:1.3.5. يتضمّن الإصدار 1.3.5 هذه التعديلات.

إصلاح الأخطاء

  • إصلاح حالتين من saveAttributes() تؤديان إلى إنشاء ملفات WebP غير صالحة

الإصدار 1.3.4

الإصدار 1.3.4

‫5 أكتوبر 2022

تم طرح androidx.exifinterface:exifinterface:1.3.4. يتضمّن الإصدار 1.3.4 هذه التعديلات.

إصلاح الأخطاء

  • إزالة إمكانية حفظ السمات في ملفات DNG كانت ميزة التوافق التي تمت إضافتها في الإصدار 1.3.3 غير مكتملة وأدت إلى إنشاء ملفات تالفة.

الإصدار 1.3.3

الإصدار 1.3.3

‫4 أغسطس 2021

تم طرح androidx.exifinterface:exifinterface:1.3.3. يتضمّن الإصدار 1.3.3 هذه التعديلات.

إصلاح الأخطاء

  • إصلاح العلامات المتعلّقة بالأقسام الفرعية (aosp/1508143)
  • منع حدوث RuntimeException عند استدعاء setDataSource (c8e66e9)
  • منع skipBytes من التكرار بلا حدود. (fdbe88b)
  • التقاط RuntimeException من MediaMetadataRetriever (389b21a)
  • إتاحة حفظ السمات لملفات DNG (3017dbc)
  • استبدِل العلامات غير المصغّرة بعلامات مصغّرة. (e1b916d)

الإصدار 1.3.2

الإصدار 1.3.2

‫2 ديسمبر 2020

تم طرح androidx.exifinterface:exifinterface:1.3.2. يتضمّن الإصدار 1.3.2 هذه التعديلات.

إصلاح الأخطاء

  • يسمح هذا الخيار بمسار SRATIONAL في GPS_LATITUDE وGPS_LONGITUDE.
  • تمت إضافة إمكانية قراءة/كتابة تنسيق ثانوي (2020-01-01 00:00:00) لعلامة DateTime.
  • تم منع الإزالة المؤقتة لملف المصدر أثناء استدعاء saveAttribute().

الإصدار 1.3.1

الإصدار 1.3.1

‫14 أكتوبر 2020

تم طرح androidx.exifinterface:exifinterface:1.3.1. يتضمّن الإصدار 1.3.1 هذه التعديلات.

إصلاح الأخطاء

  • إصلاح عملية تنفيذ saveAttributes للاحتفاظ ببيانات الصورة في MediaProvider

الإصدار 1.3.0

الإصدار 1.3.0

‫16 سبتمبر 2020

تم طرح androidx.exifinterface:exifinterface:1.3.0. يتضمّن الإصدار 1.3.0 هذه التعديلات.

التغييرات الرئيسية منذ الإصدار 1.2.0

  • تم توسيع نطاق دعم كتابة EXIF في WebP ليشمل الملفات التي تحتوي على أجزاء VP8 أو VP8L فقط.
  • تمت إزالة التخزين المؤقت غير الضروري الذي كان يتسبب في حدوث استثناءات OutOfMemory لملفات الصور الكبيرة.
  • تمت إزالة INVALID_DATE_TIME. بدلاً من ذلك، استخدِم NULL لعرض قيم التاريخ والوقت غير الصالحة.
  • تم تعديل الدالة getGpsDateTime لتعرض Long.MIN_VALUE بدلاً من -1 لقيمة غير صالحة.

الإصدار 1.3.0-rc01

‫2 سبتمبر 2020

تم إصدار androidx.exifinterface:exifinterface:1.3.0-rc01 بدون أي تغييرات منذ 1.3.0-beta01. يتضمّن الإصدار 1.3.0-rc01 هذه التعديلات.

الإصدار 1.3.0-beta01

‫19 آب (أغسطس) 2020

تم طرح androidx.exifinterface:exifinterface:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.

الميزات الجديدة

  • تم توسيع نطاق دعم كتابة EXIF في WebP ليشمل الملفات التي تحتوي على أجزاء VP8 أو VP8L فقط.

تغييرات واجهة برمجة التطبيقات

  • تمت إزالة INVALID_DATE_TIME. بدلاً من ذلك، استخدِم NULL لعرض قيمة غير صالحة للتاريخ والوقت.

إصلاح الأخطاء

  • تم تغيير قيمة الإرجاع من -1 إلى Long.MIN_VALUE لأنّ -1 قيمة صالحةgetGpsDateTime
  • تم تعديل دوال جلب البيانات المرتبطة بـ DateTime لتأخذ في الاعتبار قيمة الإزاحة (+/-) لسلسلة التاريخ.
  • تمت إزالة التخزين المؤقت غير الضروري الذي كان يتسبب في حدوث استثناءات OutOfMemory لملفات الصور الكبيرة.
  • ضبط اللغة التلقائية على الإنجليزية (الولايات المتحدة)
  • تم استبدال إضافة ‎.tmp لإنشاء ملفات مؤقتة بإضافة بادئة.

الإصدار 1.3.0-alpha01

‫19 شباط (فبراير) 2020

تم طرح androidx.exifinterface:exifinterface:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة طريقة جديدة: ExifInterface.getGpsDateTime()

الإصدار 1.2.0

الإصدار 1.2.0

1 نيسان (أبريل) 2020

تم طرح androidx.exifinterface:exifinterface:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

التغييرات الرئيسية منذ الإصدار 1.1.0

  • إتاحة إضافة EXIF إلى ملفات PNG
  • تمّت إضافة إمكانية استخدام ملفات WebP وتدفق بيانات EXIF فقط
  • تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا كان نوع MIME المحدّد متوافقًا
  • أضفنا المزيد من العلامات لوقت الإزاحة: TAG_OFFSET_TIME وTAF_OFFSET_TIME_DIGITIZED وTAG_OFFSET_TIME_ORIGINAL

الإصدار 1.2.0-rc01

‫19 شباط (فبراير) 2020

تم طرح androidx.exifinterface:exifinterface:1.2.0-rc01. يتضمّن الإصدار 1.2.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة عدم حفظ ملفات JPEG بشكل صحيح إذا كانت تحتوي على بيانات XMP

الإصدار 1.2.0-beta01

‫18 كانون الأول (ديسمبر) 2019

تم طرح androidx.exifinterface:exifinterface:1.2.0-beta01. يتضمّن الإصدار 1.2.0-beta01 هذه التعديلات.

الميزات الجديدة

  • إتاحة إضافة EXIF إلى ملفات PNG
  • إتاحة قراءة بيانات EXIF وكتابتها من ملفات WebP
  • إتاحة مصدر بيانات يتضمّن بيانات EXIF فقط

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة تطبيقات للتحقّق مما إذا كان نوع MIME المحدّد متوافقًا
  • تم عرض علامتَي OffsetTime* للقراءة والكتابة

إصلاح الأخطاء

  • تم إصلاح المشكلة المتمثّلة في عرض إزاحات غير صحيحة للرمز getAttributeRange()

الإصدار 1.1.0

الإصدار 1.1.0

‫20 تشرين الثاني (نوفمبر) 2019

تم طرح androidx.exifinterface:exifinterface:1.1.0. يتضمّن الإصدار 1.1.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.0.0

  • توفير تنسيق HEIF والمزيد من علامات XMP
  • تمّت إضافة إمكانية إنشاء عنصر ExifInterface من File أو FileDescriptor
  • تمت إضافة المزيد من الطرق للحصول على السمة: hasAttribute وgetAttributeBytes وgetAttributesRange

الإصدار 1.1.0-rc01

‫9 أكتوبر 2019

تم طرح androidx.exifinterface:exifinterface:1.1.0-rc01. يتضمّن الإصدار 1.1.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تمت إضافة اسم تنسيق غير متوفّر (IFD) لمنع حدوث ArrayIndexOutOfBoundsException على loadAttributes
  • تم منع حذف الملف الأصلي عند حدوث استثناء أثناء طلب saveAttributes
  • تم إصلاح مشكلة استثناء عند إجراء طلب إلى saveAttributes() بعد الكتابة فوق ملف.

الإصدار 1.1.0-beta01

2 تموز (يوليو) 2019

تم طرح androidx.exifinterface:exifinterface:1.1.0-beta01. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • يتم عرض الخطأ NullPointerException عند ضبط null على وسيطات @NonNull
  • إتاحة علامات XMP

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة المزيد من الطرق للحصول على معلومات السمات
  • hasAttribute وgetAttributeBytes وgetAttributesRange

إصلاح الأخطاء

  • منع تسرُّب الذاكرة في واصف الملف

الإصدار 1.1.0-alpha01

‫13 مارس 2019

تم طرح androidx.exifinterface:exifinterface:1.1.0-alpha01. يمكنك الاطّلاع على القائمة الكاملة للتعديلات في هذا الإصدار هنا.

الميزات الجديدة

  • تنسيق HEIF المتوافق

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة المزيد من أدوات إنشاء ExifInterface
  • تم تصحيح الخطأ المطبعي: TAG_CAMARA_OWNER_NAME -> TAG_CAMERA_OWNER_NAME

إصلاح الأخطاء

  • تم إصلاح مشكلة التحقّق من احتمال تجاوز سعة الصورة المصغّرة (aosp/748608)