2009-05-18 12 views
1

Ich erhalte die folgende Ausnahme beim Aufruf von BitmapMetadata.GetQuery ("/ app13/irb/8bimiptc/iptc") auf etwa 1% der JPEGs, die ich ausprobiert habe. Was könnte das verursachen und was kann ich tun, um es zu beheben? (Ich habe versucht, googeln, aber ich kann nur ein relevantes Ergebnis zu fragen die gleiche Frage finden, aber ohne Antwort.)Fehler beim Lesen von IPTC-Feldern von JPEGs in .NET

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. 

Edit:

Die exiv2 Werkzeug Berichte:

Error: Invalid Photoshop IRB data size 6372 
+0

Könnten Sie eine JPEG-Post Das hat dieses Problem, damit ich klaue k hinein? –

+0

Leider kann ich kein Beispiel veröffentlichen, da einige der IPTC-Daten urheberrechtlich geschützt sind, und wenn ich sie ausarbeite, wird die Ausnahme nicht reproduziert. – Liam

Antwort

1

Meine Vermutung ist, dass die Photoshop IRB-Daten länger sind, als der Header angibt.

Mindestens das ist, was ich durch Abschöpfen über die Quelle der Exiv2 (Linie 107) abziehen kann:

http://dev.exiv2.org/repositories/entry/exiv2/trunk/src/jpgimage.cpp?rev=1146

Aber mein Verständnis von c ist nicht so gut! :)

+0

Danke, ich frage mich, ob es Werkzeuge gibt, um solche Fehler in den Headern zu korrigieren? – Liam

+0

Ich bin wieder auf diesen Fehler gestoßen, habe ihn gegoogelt und meine alte Frage hier gefunden. Dieses Mal habe ich einen try..catch-Block hinzugefügt, die Namen der Problemdateien protokolliert und sie durch Öffnen in XnView und Auswahl von Bearbeiten> Metadaten> IPTC-Daten bearbeiten> Schreiben repariert. – Liam

+0

Haben Sie Vorschläge für eine große Anzahl von Bildern? – Liam

1

Fehler 0x88982F05 ist nur reguläre Wert-out-of-Bereich Fehler von WIC So kann es leicht von Ihnen behandelt werden. Dies ist möglicherweise nicht das einzige Problem mit IPTC-Abfragezeichenfolgen. Nur try {} catch {} diesen Abschnitt so zu anmutigen fallover

if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) { 
try { 
... } 
catch {} 
0

Basierend auf den Informationen von exiv2 berichtet, die Größe der Photoshop IRB Informationen ist nicht mit der Gesamtgröße der Metadaten.

Wenn Sie die Nachrichten ignorieren möchten, wäre ich spezifischer in der Art der Ausnahme, die Sie fangen - nur ignorieren oder melden Sie diese bestimmte COM-Ausnahme.

Ein paar Werkzeuge/Ressourcen gibt:

Verwandte Themen