我正在尝试使用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
数据由另一个仅支持此标记的应用程序读取,因此不能选择使用其他“注释”字段。
有什么想法吗?
答案 0 :(得分:4)
/com/TextEntry
的数据类型有点棘手,需要LPSTR。这是一个原始的8位编码字符串指针。您可以通过传递参数的char []来完成此操作。修正:
meta.SetQuery("/com/TextEntry", "xxx".ToCharArray());
请注意,如果使用非ASCII字符,文本编码可能会出现问题,您将在机器的默认代码页(Encoding.Default)中对文本进行编码。