Some of you may recognize me from the Vista Forums and Sevenforums, and will be familiar with a utility that I've made available to members of those forums, my "Duplicate Picture Finder".
This utility visually scans a given folder, or set of folders, in order to locate duplicate images, even if resolutions differ. Depending on the number of files involved, and because of the techniques employed in making comparisons, it can take anything from a few minutes to several hours to complete. What I'm looking for is a way to filter the files that it actually scans. This is what I had in mind:
I'd like to add a "search" facility that uses the built-in Windows Search of Vista and 7 (or Windows Search 4.0 on XP) on a given set of folders so that DPF only scans files that match any given tags. All image on my system are tagged and categorized with Windows Live Photo Gallery, and being able to limit duplicate scans to specific tags like "Wallpapers", "Nature", "Cars", "Diablo 3", etc will make the utility a little more user friendly, and will allow for the exclusion of files that are currently being scanned when they should not be.
Related to the above idea, I'd obviously need some code that can read (and write) the XMP metatags tags used on JPG images in Windows Vista and Windows 7. This will be an important part of the program, so that when it flags certain files as being duplicates, I'd like the ability to copy the tags from a "duplicate" file to the "original" file. As it stands, when DPF flags a file as a duplicate, it has no way of determining whether or not it contains XMP metatags, and subsequently ends up deleting the file that has the tags I need, and keeps the file that contains no tags.
In order to maintain portability (DPF can run directly from a flash drive), I'm looking for Delphi 2009 VCL components (preferably open source, but not crucial) that allows me to create and execute Windows Search queries within my code, and have the results returned in a TStringsList object. Also a component that can both read and write the XMP tags in a JPG image file.
These components should not rely on any external libraries or ActiveX controls (like Chilkat XMP), other than the API code provided natively by Windows itself.
Does anyone have any recommendations? I know Delphi 2010 supports the Windows Imaging Components of Windows, but it's a little out of my budget at the moment, so that is out of the questions.
P.S. Troy, if you're reading this, thanks for the recommendation. DonationCoder looks like a great forum. Should I be able to implement the changes to DPF that I mention here, I may even consider making DPF available here. I'll see how it goes.