以下代码解决了我的问题,并在给定的JPEG图像中添加了注释:
public void addImageComment(string imageFlePath, string comments) { string jpegDirectory = Path.GetDirectoryName(imageFlePath); string jpegFileName = Path.GetFileNameWithoutExtension(imageFlePath); BitmapDeprer deprer = null; Bitmapframe bitmapframe = null; Bitmapmetadata metadata = null; FileInfo originalImage = new FileInfo(imageFlePath); if (File.Exists(imageFlePath)) { // load the jpg file with a JpegBitmapDeprer using (Stream jpegStreamIn = File.Open(imageFlePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None)) { deprer = new JpegBitmapDeprer(jpegStreamIn, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); } bitmapframe = deprer.frames[0]; metadata = (Bitmapmetadata)bitmapframe.metadata; if (bitmapframe != null) { Bitmapmetadata metaData = (Bitmapmetadata)bitmapframe.metadata.Clone(); if (metaData != null) { // modify the metadata metaData.SetQuery("/app1/ifd/exif:{uint=40092}", comments); // get an enprer to create a new jpg file with the new metadata. JpegBitmapEnprer enprer = new JpegBitmapEnprer(); enprer.frames.Add(Bitmapframe.Create(bitmapframe, bitmapframe.Thumbnail, metaData, bitmapframe.ColorContexts)); //string jpegNewFileName = Path.Combine(jpegDirectory, "JpegTemp.jpg"); // Delete the original originalImage.Delete(); // Save the new image using (Stream jpegStreamOut = File.Open(imageFlePath, FileMode.CreateNew, FileAccess.ReadWrite)) { enprer.Save(jpegStreamOut); } } } } }这实际上是Konamiman友善提供的链接下找到的代码的轻度修改版本。
请注意,要进行此工作,您需要向 PresentationCore 和 Windowsbase 添加.NET引用。如果使用Visual Studio
2008,则可以通过以下方式实现:
在解决方案资源管理器中右键单击您的项目
从下拉列表中,选择添加“参考…”。
在打开的新框中,选择“ .NET”选项卡
滚动到上面提到的两个参考,然后在每个参考上单击“确定”。
非常感谢danbystrom和Konamiman在这件事上的帮助。我非常感谢您的快速回应。



