【发布时间】:2011-02-14 20:21:48
【问题描述】:
在 Windows 7 InPlaceBitmapMetadataWriter.TrySave() 中的某些 .JPG 文件(EPS 预览,由 Adobe Illustrator 生成)上,在某些 SetQuery() 调用后返回 true,但什么也不做。
代码示例:
BitmapDecoder decoder;
BitmapFrame frame;
BitmapMetadata metadata;
InPlaceBitmapMetadataWriter writer;
decoder = BitmapDecoder.Create(s, BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
frame = decoder.Frames[0];
metadata = frame.Metadata as BitmapMetadata;
writer = frame.CreateInPlaceBitmapMetadataWriter();
try {
writer.SetQuery("System.Title", title);
writer.SetQuery(@"/app1/ifd/{ushort=" + exiftagids[0] + "} ", (title + '\0').ToCharArray());
writer.SetQuery(@"/app13/irb/8bimiptc/iptc/object name", title);
return writer.TrySave();
}
catch {
return false;
}
您可以通过下载图像示例并使用此代码示例在此图像上设置标题来重现问题(如果您有 Windows 7)。 图像有足够的空间存放元数据——这个代码示例在我的 WinXP 上运行良好。 相同的代码在 Win7 上与其他 .JPG 文件一起工作正常。
欢迎任何想法:)
【问题讨论】: