在C#中将EXIF数据写入图像可以通过使用System.Drawing.Imaging命名空间中的类来实现。以下是一个示例代码,演示了如何将EXIF数据写入图像:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
public class ExifWriter
{
public static void WriteExifData(string imagePath, string key, string value)
{
using (Image image = Image.FromFile(imagePath))
{
PropertyItem[] propertyItems = image.PropertyItems;
// 创建一个新的PropertyItem对象
PropertyItem newItem = (PropertyItem)Activator.CreateInstance(typeof(PropertyItem));
// 设置PropertyItem的ID
newItem.Id = 0x9003; // 0x9003表示Image Description
// 设置PropertyItem的类型为ASCII字符串
newItem.Type = 2;
// 设置PropertyItem的值为ASCII字符串的字节数组
newItem.Value = Encoding.ASCII.GetBytes(value + '\0');
// 设置PropertyItem的长度
newItem.Len = newItem.Value.Length;
// 将新的PropertyItem添加到PropertyItem数组中
Array.Resize(ref propertyItems, propertyItems.Length + 1);
propertyItems[propertyItems.Length - 1] = newItem;
// 将修改后的PropertyItems数组重新设置给图像
image.SetPropertyItem(newItem);
// 保存修改后的图像
image.Save(imagePath);
}
}
}
使用上述代码,你可以通过调用WriteExifData
方法来将EXIF数据写入图像。其中,imagePath
参数表示图像文件的路径,key
参数表示EXIF数据的键,value
参数表示EXIF数据的值。
以下是一个示例调用代码:
string imagePath = "path/to/image.jpg";
string key = "ImageDescription";
string value = "This is a sample image.";
ExifWriter.WriteExifData(imagePath, key, value);
这个示例代码将在指定的图像文件中添加一个名为"ImageDescription"的EXIF数据,并将其值设置为"This is a sample image."。
请注意,这只是一个简单的示例,你可以根据需要修改和扩展代码来处理其他类型的EXIF数据。
领取专属 10元无门槛券
手把手带您无忧上云