حدث خطأ أثناء قراءة حقول IPTC من ملفات JPEG في .NET
سؤال
أحصل على الاستثناء التالي عند استدعاء BitmapMetadata.GetQuery("/app13/irb/8bimiptc/iptc") على حوالي 1% من ملفات JPEG التي جربتها.ما الذي يمكن أن يسبب هذا وماذا يمكنني أن أفعل لإصلاحه؟(لقد حاولت البحث على Google ولكن لم أتمكن من العثور إلا على نتيجة واحدة ذات صلة تطرح نفس السؤال ولكن بدون إجابة.)
System.OverflowException:
The image data generated an overflow during processing. --->
System.Runtime.InteropServices.COMException (0x88982F05):
Exception from HRESULT: 0x88982F05
--- End of inner exception stack trace ---
at System.Windows.Media.Imaging.BitmapMetadata.GetQuery(String query)
at MyProject.ImageRecord..ctor(String file)
in C:\MyProject\ImageRecord.cs:line 93
The image data generated an overflow during processing.
يحرر:
ال exiv2
تقارير الأداة:
Error: Invalid Photoshop IRB data size 6372
المحلول
وتخميني هو أن بيانات الاتحاد الدولي للرجبي فوتوشوب أطول من يحدد رأس.
وعلى الأقل هذا هو ما يمكن أن تقتطع من قبل القشط فوق مصدر Exiv2 (خط 107):
HTTP: //dev.exiv2 كافيه / مستودعات / دخول / exiv2 / جذع / SRC / jpgimage.cpp؟ تزيد السرعة = 1146
ولكن ما أفهمه من ج ليست جيدة! :)
نصائح أخرى
خطأ 0x88982F05 هو الوحيد المنتظم القيمة خارج نطاق الخطأ WIC وبالتالي فإنه يمكن أن يكون easely التعامل معها من قبل لك. أيضا هذا قد لا يكون المشكلة الوحيدة مع سلاسل الاستعلام IPTC. مجرد محاولة {} الصيد {} هذا القسم مثل هذا fallover رشيقة
if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) {
try {
... }
catch {}
وتحقق هذه الوظيفة - ثابت مشكلتي
http://getsatisfaction.com/livelabs/topics/deepzoomtools_dll_exception_from_hresult_0x88982f05
استنادًا إلى المعلومات التي أبلغت عنها exiv2، فإن حجم معلومات Photoshop IRB لا يتوافق مع الحجم الإجمالي لبيانات التعريف.
إذا كنت ترغب في تجاهل الرسائل، سأكون أكثر تحديدًا في نوع الاستثناء الذي تكتشفه - فقط قم بتجاهل استثناء COM المحدد أو الإبلاغ عنه.
زوجان من الأدوات/الموارد المتاحة: