我已经创建了一些函数来编辑Jifg图像的Exif元数据,现在我可以编辑注释但是当我尝试编辑标题时它没有用,没有显示错误,我想要通过替换原始文件来保存它,这是我到目前为止创建的代码:
System.Drawing.Image image = null;
protected void EditCommentBtn_Click(object sender, EventArgs e)
{
image = System.Drawing.Image.FromFile(filepath);
PropertyItem propItem = image.PropertyItems[0];
using (var file = System.Drawing.Image.FromFile(filepath))
{
propItem.Id = 0x9286; //Usercomment
propItem.Type = 2;
propItem.Value = System.Text.Encoding.UTF8.GetBytes("HelloWorld\0");
propItem.Len = propItem.Value.Length;
file.SetPropertyItem(propItem);
PropertyItem propItem1 = file.PropertyItems[file.PropertyItems.Count() - 1];
string newFilename = "newfilename.jpg";
file.Save(newFilename, ImageFormat.Jpeg);
}
}
protected void EditTitleBtn_Click(object sender,EventArgs e)
{
image = System.Drawing.Image.FromFile(filepath);
PropertyItem propItem = image.PropertyItems[0];
using (var file = System.Drawing.Image.FromFile(filepath))
{
propItem.Id = 0x0320; //Title
propItem.Type = 2;
propItem.Value = System.Text.Encoding.UTF8.GetBytes("testtitle\0");
propItem.Len = propItem.Value.Length;
file.SetPropertyItem(propItem);
PropertyItem propitem1 = file.PropertyItems[file.PropertyItems.Count() - 1];
string newFilename = "newfilename.jpg";
if (File.Exists(filepath))
{
image.Dispose();
File.Delete(filepath);
}
file.Save(newFilename, ImageFormat.Jpeg);
}
}
并且在保存文件时出现错误,因为我想替换我编辑过的jpeg,我试图使用File.Exits和File.Delete,但它对我没有用,这是错误的显示
该进程无法访问文件“文件路径”,因为它正在存在 由另一个进程使用
虽然我预先处理了图像,但我可以删除其他文件,而不是我用来检查if
块中条件的文件。
答案 0 :(得分:0)
好吧显然我找到了它对我不起作用的原因,因为我使用了错误的ID作为标题,所以无论我尝试多少次都无法更改标题。
标题的正确ID为propItem.Id = 0x010E;
,其余代码与EditComment事件几乎相同,因为它们使用相同的数据类型。