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

时间:2014-01-17 15:12:28

标签: c# .net 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
    }

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

/com/TextEntry的数据类型有点棘手,需要LPSTR。这是一个原始的8位编码字符串指针。您可以通过传递参数的char []来完成此操作。修正:

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

请注意,如果使用非ASCII字符,文本编码可能会出现问题,您将在机器的默认代码页(Encoding.Default)中对文本进行编码。