.NET で JPEG から IPTC フィールドを読み取るときにエラーが発生しました
質問
これを試した JPEG の約 1% で BitmapMetadata.GetQuery("/app13/irb/8bimiptc/iptc") を呼び出すと、次の例外が発生します。これの原因は何でしょうか?また、それを修正するにはどうすればよいですか?(グーグルで検索してみましたが、同じ質問をしている関連する結果が 1 つしか見つかりませんでしたが、回答はありませんでした。)
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
解決
私の推測では、PhotoshopのIRBデータはヘッダが指定するよりも長いということです。
は、少なくともこれは私がExiv2(ライン107)のソースの上にスキミングによって差し引くことができるものです
のhttp://dev.exiv2 .ORG /リポジトリ/エントリー/ exiv2 /トランク/ SRC / jpgimage.cpp?REV = 1146 の
が、Cの私の理解は良いことではありません! :)
他のヒント
エラー0x88982F05はWICによってのみ、通常の値-out-of-rangeエラーです したがって、それはあなたによってeasely処理することができます。また、これはIPTCのクエリ文字列を使用して唯一の問題ではないかもしれません。ただ、優雅なフォールオーバーに{}キャッチ{}このように、このセクションを試してみてください。
if (bitmapMetadata.GetQuery(MY_QUERY) != null &&) {
try {
... }
catch {}
この記事をチェックしてください - 私の問題を修正
http://getsatisfaction.com/livelabs/topics/deepzoomtools_dll_exception_from_hresult_0x88982f05する
exiv2 によって報告された情報に基づくと、Photoshop IRB 情報のサイズはメタデータ全体のサイズと一致しません。
メッセージを無視したい場合は、キャッチした例外の種類をより具体的に説明します。その特定の COM 例外のみを無視または報告します。
いくつかのツール/リソースがあります: