4

WPF を使用して画像ファイルに JPEG コメントを追加しようとしています。次のコードを試すと、ArgumentOutOfRangeException. 他のプロパティの設定は問題なく機能します。

    using (Stream read = File.OpenRead(@"my.jpeg"))
    {
        JpegBitmapDecoder decoder = new JpegBitmapDecoder(read, BitmapCreateOptions.None, BitmapCacheOption.None);

        var meta = decoder.Frames[0].Metadata.Clone() as BitmapMetadata;
        meta.SetQuery("/app1/ifd/exif:{uint=40092}", "xxx"); // works
        meta.SetQuery("/com/TextEntry", "xxx"); // does not work
    }

明確にするために、MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ee719904%28v=vs.85%29.aspxにリストされている /com/TextEntry フィールドを設定する必要があります。 #_jpeg_metadata

データは、このタグのみをサポートする別のアプリケーションによって読み取られるため、他の「コメント」フィールドを使用するオプションはありません。

何か案は?

4

1 に答える 1

5

のデータ型/com/TextEntryは少しトリッキーで、LPSTR が必要です。これは生の 8 ビットでエンコードされた文字列ポインタです。これを行うには、引数に char[] を渡します。修理:

   meta.SetQuery("/com/TextEntry", "xxx".ToCharArray());

ASCII 以外の文字を使用すると、テキストのエンコードが問題になる可能性があることに注意してください。テキストは、マシンの既定のコード ページ (Encoding.Default) でエンコードされます。

于 2014-01-17T16:04:27.913 に答える