我正在尝试使用 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 http://msdn.microsoft.com/en-us/library/windows/desktop/ee719904%28v=vs.85%29.aspx#_jpeg_metadata
数据由仅支持此标签的另一个应用程序读取,因此不能选择使用其他“注释”字段。
有任何想法吗?
数据类型为/com/TextEntry
有点棘手,它需要 LPSTR。这是一个原始的 8 位编码字符串指针。您可以通过为参数传递 char[] 来完成此操作。使固定:
meta.SetQuery("/com/TextEntry", "xxx".ToCharArray());
请注意,如果您使用非 ASCII 字符,文本编码可能会成为问题,您将获得在计算机的默认代码页 (Encoding.Default) 中编码的文本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)