.NET で JPEG から IPTC フィールドを読み取るときにエラーが発生しました

StackOverflow https://stackoverflow.com/questions/878768

  •  22-08-2019
  •  | 
  •  

質問

これを試した 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 例外のみを無視または報告します。

いくつかのツール/リソースがあります:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top