|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Announcements
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
IntroductionJPGDateChanger is a tool that changes last modified date of a JPG file to match the date extracted from Date Taken field in file's EXIF tag. BackgroundOften after transferring images from my digital camera I quickly go through them and fix the orientation on pictures taken in portrait mode. On my XP machine I simply use the built in Windows Picture and Fax Viewer to do the job. On my Vista machine this program was replaced with Windows Photo Gallery. The new 'feature' of the Vista's replacement is that clicking on Rotate button sets the "Date Modified" to current time. I find this behaviour really annoying, since I usually sort my pictures in the folder by date. After screwing up the dates on some pictures for the N-th time (being forgetful), I tried to find the tool on Internet that would change the date back by extracting it from EXIF tag. Unfortunately I found only some all-in-one utilities, all bloated and all shareware. Well, it shouldn't be too hard to write one myself, I thought. Turned out it was dead simple. Immediately on Codeproject I found Davide Pizzolato's article CExif, and in 15 minutes, after modifying his example, I had a working program! The other 4 hours went into polishing its look ;-) UsageTo use the tool, simply drop JPG files on the main window and their dates will be automatically updated. The files must have extension JPG or JPEG. If the some image files don't have EXIF tag, or the date stored in the EXIF is the same as last modified date, no action will be taken on those files. I added "Keep Window on Top" option for convenience and this preference is stored in the Windows Registry. About the codeFor details on reading EXIF from jpg files see Davide Pizzolato's article CExif. To change the date I simply use MFC's CFileStatus fs;
if (CFile::GetStatus(fname, fs))
{
CTime t_new (d_yyyy, d_mm, d_dd, t_hh, t_mm, t_ss);
fs.m_mtime = t_new;
CFile::SetStatus(fname, fs);
}
LinksHere's all the links to other people's work that I used to create this tool.
History
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||