سؤال

أنا مهتم بتحليل نتيجة exiftool باستخدام Java API أو شيء من هذا القبيل.

لقد قمت بالبحث، ولكن لم أجد أي مثال.على سبيل المثال، كيف يمكنني الحصول على هذه النتائج في مشروع جافا الخاص بي؟

رقم إصدار ExifTool:8.22

اسم الملف :ExifTool.jpg

الدليل :ر / ملف الصور

مقاس :24 كيلو بايت تاريخ/وقت تعديل الملف

إلخ..أنا أبحث عن "كيفية" أو شيء من هذا القبيل.

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

المحلول

exiftool (بالنسبة لـ Java) تم تصميمه ليكون تجريدًا بسيطًا للاستخدام وقوي لـ Phil Harvey's Exiftool. لقد قدمت للتو أول إصدار عام هذا الأسبوع الماضي بعد حضانة المشروع في ظل مظلة مشروع IMGSCALR لفترة من الوقت.

المشروع تحت ترخيص Apache 2 الصديق التجاري.

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

في هذا الإصدار الأولي ، أؤيد قراءة بيانات علامة القراءة (سأضيف الكتابة في إصدار مستقبلي) وهو بسيط مثل هذا:

File image = // path to some image
ExifTool tool = new ExifTool();

Map<Tag, String> valueMap =
    tool.getImageMeta(image, Tag.GPS_LATITUDE, Tag.GPS_LONGITUDE);

System.out.println("Lat: " + valueMap.get(Tag.GPS_LATITUDE) +
    "\tLong: " + valueMap.get(Tag.GPS_LONGITUDE));

استخدام Exiftool في "وضع Daemon" الجديد (-STAY_OPEN TRUE CMD LINE) مدعوم أيضًا ويسهل تشغيل الدعم له مثل إنشاء مثيل exiftool مثل SO:

ExifTool tool = new ExifTool(Feature.STAY_OPEN);

الوثائق على كيفية استخدام فئة exiftool واسعة النطاق ، تغطي كل شيء من التصميم إلى الأداء إلى سلامة الخيط.

بالإضافة إلى الاستفادة من Exiftool Simple من Java ، يستخدم الفصل قدرًا كبيرًا من الاحتياطات لتقليل مشكلات وقت التشغيل بالإضافة إلى التقاط أي وجميع الأخطاء التي يمكن أن تنشأ بطرق موثقة بشكل جيد (بدلاً من ترك استثناءات مفاجأة تفوق من فصول جافا الأساسية).

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

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

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

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

هذه التصميمات كلها جزء من هدفي النهائي المتمثل في جعل تكامل exiftool في تطبيق Java سلسًا وأداء وسهلًا.

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

نصائح أخرى

تحقق من الاستجابة في منتدى Exiftool:

http://u88.n24.queensu.ca/exiftool/forum/index.php/topic،2697.0.html

لا أعرف exiftool، لكني استخدمته سابقًا MediaUtil لقراءة علامات exif وكتابتها في Java (استخدمتها للتدوير التلقائي لصور jpeg)

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