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 回答