如何向图像添加 JPEG 注释 (COM)?

aKz*_*enT 4 .net c# wpf jpeg wic

我正在尝试使用 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
    }
Run Code Online (Sandbox Code Playgroud)

要清楚:我必须设置 MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ee719904%28v=vs.85%29.aspx 中列出的 /com/TextEntry 字段#_jpeg_metadata

数据由另一个仅支持此标记的应用程序读取,因此不能选择使用其他“注释”字段。

有任何想法吗?

Han*_*ant 5

for 的数据类型/com/TextEntry有点棘手,它需要一个 LPSTR。这是一个原始的 8 位编码字符串指针。您可以通过为参数传递一个 char[] 来做到这一点。使固定:

   meta.SetQuery("/com/TextEntry", "xxx".ToCharArray());
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用非 ASCII 字符,文本编码可能是一个问题,您将在机器的默认代码页 (Encoding.Default) 中获得文本编码。