First of all, I must say that there are very good articles (here on codeProject) dealing with EXIF tag reading:
and some others explaining EXIF tag writing:
But as it happens most of the time, I needed a small app that would allow me to update a specific EXIF tag, and I wanted it done in C# (for learning purposes). After reading the previous articles and some other references carefully, I decided to go ahead and write a binary to solve my problems.
So, what we have here is a utility that updates EXIF tag '0x9003' (Tag
DateTimeOriginal) and EXIF tag '0x9004' (Tag
DateTimeDigitized). Other EXIF tags could be updated using the same technique:
Encoding _Encoding = Encoding.UTF8;
Image theImage = new Bitmap(m_currImageFileTemp);
PropertyItem propItem36867 = theImage.GetPropertyItem(36867);
propItem36867.Value = _Encoding.GetBytes(m_textPropertyValue.Text + '\0');
PropertyItem are .NET 2.0 classes.
You can find information about EXIF standard here.
I hope you find the code useful.
Using the utility
As you can see in the image enclosed, the utility reads the date to update from a free input. The format for that string MUST be
'YYYY:MM:DD hh:mm:ss', in any other case the program won't be able to update the EXIF tags safely.
I am enclosing a picture with EXIF tags for testing purposes: you will find it in the root folder of the zip file.
The code was compiled using Microsoft Visual Studio 2005, I can't tell if it will compile with previous versions. To execute it you will need the .NET framework 2.0.
About Jose Javier Sanjosé
Software architect, system administrator, web designer. I have been using C++ for the last 16 years, mainly until .NET come around (even though I try not to follow Microsoft's trends too close anymore).