How can I change the List view?

Started by Beholder3, February 16, 2011, 12:54:56 PM

Previous topic - Next topic

Beholder3

Hi,
I use ExifTool & GUI to edit some picture files, because the focal length is not set properly by the camera when I zoom out to the max.
So I need to identify the files which have an empty EXIF tag called FocalLength plus FocalLengthin35mmFormat.
Here my guess and try was to get the ExifTool GUI show me this in the list view as column.

I have no idea how to do this, though.

I can choose four predefined views with very few columns (Standard, Camera Settings, About Image, XMP:Location Info), but they don't include the column I need.

Then I looked at the ExifToolGui.ini file and added "EXIF=FocalLength" under "[ListViewTags]". Didn't help. Anyhow neither am I sure I spelled it correctly nor do I have any idea how to make these columns listed under [listviewtags] shopw up at all since they don't match any column combination found in any of the four predefined views.

Now I'm lost.

Can anyone help me find the error I have made?
???   

BogdanH

Hi,

FocalLength is Exif tag and if this tag is defined inside image file, then it will be shown inside GUI when Quick, Exif or All button is selected. When you're using Exif (view) button, then you can define this tag for Custom view, of course.
If you select Quick (view) button, then this tag will be listed even if it doesn't exist inside file -in this case it's value is blank, of course.
All of above also applies for FocalLengthIn35mmFormat, except, it isn't shown in Quick view mode.
To define which Exif tag you wish to see in Custom view:
1. Exif button must be selected.
2. File must contain desired tag.
3. Right click on desired tag and choose "Add tag to Custom view".
It isn't a good idea to manually edit ini file, though... if above procedure doesn't work, then there's possibility ini file is messed up (exit GUI, delete ini and start GUI again).

I didn't pay attention.. you said you have [ListViewTags] section inside ini file? Then you must be using old GUI version (v3.xx). All above applies for latest GUI version! -which I recommend to use.

Bogdan

Beholder3

Hi,

thanks for your quick reply. :)

I started with version 3.38 and yesterday updated to 4.06, so I guess the ini file was just updated and kept the old entries.

Maybe I misunderstand your reply, but my wish is to see those two fields as columns in the list view in the middle of the screen (for multiple files).

I know I can see those tags for one single file on the right screen side in the specific views, such as EXIF and "custom".

Is there any way to customise the columns shown in the list view?

In the Camera settings view the "FocalLength" is listed, but not the "FocalLengthIn35mmFormat".



BogdanH

#3
Hi,

I understand now. Before continuing: when switching from older GUI version to v4.xx, keeping old ini file shouldn't do any harm. However, many old (not used anymore) entries will remain in ini file. So, it's better to delete ini and GUI will generate new (clean) one -if worth, at least you'll know what GUI is actually using.

Right now, you can't choose what tags you wish to see in middle (filelist) pane. I'll try to add "in35mm" in next update which will be available today (hopefully).

Bogdan

Added:
Updated GUI v4.07 is available for download.

Beholder3

Hello Bogdan,

thank very, very much for making this change! :)

As a suggestion / feature request I'd say that I guess it would be an idea to offer one view in the filelist pane which is linked to the "custom" view on the right side details pane. So all users can choose which items the filelist shows. And I assume if you pick some for the details view on the right side you usually also would see it positively if this information is available in the fiellist pane in order to pick the right files to edit.

Thanks again for your very quick help!


BogdanH

I understand what you mean. It's not the problem how to make columns (in Filelist pane) customizable by user -it's about speed: reading various metadata from several hundreds/thousands files is quite time consuming. To make this faster (populating data in Filelist pane), instead of using ExifTool to read metadata, I wrote my own procedures for that purpose (and for Quick view). I am aware, that my code isn't the fastest possible.. however, as it is, it's much faster than using ExifTool for that purpose.
And finally, my code doesn't read all metadata: only a small amount of most interesting (for everyone, I hope) tags are parsed -that is, I can't compete with ExifTool here :)

Bogdan

PS (for Phil): Yes, I still didn't found enough time to learn/implement -stay_open option  ;)

Beholder3

Hi,

I understand that speed issue. On vacation trips I usually have a geologging device with me and and now geotag my photos as well based on that data. For this purpose I use the free software "Geosetter" (http://www.geosetter.de/en/).
It's tag editing is also based on ExifTool. It has very limited tag editing features other than centered on geodata and author fields.
But it does list whatever Tag you want in it's listview and the speed is acceptable to me. For initial reading of say 800 pictures it sometimes takes a minute or so but from there on speed is ok (I don't know what CPU speed impact is there).
From my end-user perspective a single solution with your two great pieces of software would be the best.
My workflow today is to geotag the pictures with geosetter, then add author information with it, then add lens info with ExifToolGUI, then add FocalLength info for my pictures with less than 10mm Focuslength in ExiftoolGUI.


BogdanH

I've tried GeoSetter not so long ago and I was quite impressed in this regard. Now, I can only assume how author achieved that:
-he for sure uses better programming components than I'm using in GUI
-could be, he's using ExifTool's -stay_open option, which is a lot faster than "classic" ExifTool usage
-he is better programmer than I am  ::)

However, I can hardly accept waiting a minute till Filelist gets populated with tag values...
So I've checked how GUI does (on my PC) when in Details:Camera setting Filelist view. By selecting a folder, which contains ~400 raw files (average filesize ~17Mb), Filelist pane is populated with tag values (6 tags/file) in about 5-6 seconds. Not that bad... for hobby programmer  :)
But there's always place for improvement, of course -if there's enough time to do it.

Bogdan

Phil Harvey

Quote from: BogdanH on February 18, 2011, 11:28:19 AM
-could be, he's using ExifTool's -stay_open option, which is a lot faster than "classic" ExifTool usage

While I can't say for sure, I don't think that geosetter has been updated to use the new -stay_open option.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

BogdanH

Hi Phil,
You could bi right, because (at least in GUI case) -stay_open requires quite a lot adaptation. Anyway, from users perspective, GeoSetter seems to show metadata (of many files) faster than GUI does.
Time to findout where the bottleneck is in GUI...

Bogdan

Phil Harvey

Hi Bogdan,

I assume you are calling exiftool only once to extract information from all the files?  I must admit I have never used GeoSetter, so I don't know what sort of speed it is getting, but with anything written in a compiled language I would have thought that the exiftool step would always be the bottleneck.  In exiftool there are 3 main bottlenecks:

1) startup compilation overhead (only on the first file)

2) reading/writing the metadata (slower if there is more information in the file)

3) system i/o performance (significant for large files)

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

MOL

#11
Hi Bogdan

I know that GeoSetter is written in Delphi, which can generate rather fast executables. Using it for software development myself, I can tell you how much time it takes on average to extract a full set of meta data (with 150+ tags) from a file with latest ExifTool: depending on the file format between 30 milliseconds and a second on a slow PC. Loading a 140MB (16 bit) TIF file including its full set of meta tags takes 2.01 secs. with a prog I wrote, if that's of help.

Tested on Intel Core2 6600 CPU/ 2.4 GHz , 2 GB RAM, NVidia GeForce GTX 580, Vista Home Premium 32 bit

Uwe


EDIT:
Almost forgot - the key to a fast retrieval of meta tags is to call ExifTool in a separate worker thread.

BogdanH

Hi Uwe,

First, thank you for info (btw. GUI is written in Delphi too -it's "old" v7).
As I have mentioned somewhere above: for showing metadata in Filelist pane, I'm using my own procedures for reading metadata from files. It goes faster than if I would use ExifTool for that purpose.. as far I've tried out. However, because of my limited knowledge, I'm not able to parse all metadata (only about 50 tags).
It's hard to compare speed on different PC's.. I have E8200 Core2 Duo @2.67GHz, 4MB RAM on Win7 64bit and WD Green HDD -average PC.
On this PC, my procedure (in GUI) reads metadata from single raw files in about 7.2msec. Sounds impressive... but on 500 files, that is almost 4 seconds -not very snappy when browsing  :)

Thanks again,
Bogdan

MOL

#13
I did some more testing and it seems that I'm faster than you, even if I use ExifTool directly:

Your numbers:
1 file - 50 tags - 7.2 msec

Mine, using ExifTool:
1 file (12.8 MB ORF file) - 387 tags - 53 msec (div 7.74 = 6.847 msec)

Have you done some timing using ExifTool with threads? You might also want to check out the component DOSCommand.

Phil Harvey

If you want to compare times, I suggest using a standard set of test files -- perhaps something like the Canon samples from the ExifTool Meta Information Repository.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

MOL

To be accurate, we would have to compare the same images, of course. But I don't think that it would help Bogdan much to find the bottlenecks in his procedures. I only mentioned my numbers to indicate that using ExifTool directly might not be much slower (except for the first file).

Give me a day or two and I prepare a test program which uses GetTickCount (let's keep it simple) to measure the load time. I'll upload it here, if that's okay with you, Phil.

Uwe

Phil Harvey

Please feel free to post anything exiftool-related that you want here.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

BogdanH

Hi Uwe,
Quote from: MOL on February 19, 2011, 02:06:15 PM
I did some more testing and it seems that I'm faster than you, even if I use ExifTool directly:

Your numbers:
1 file - 50 tags - 7.2 msec
-yes, that's correct: from hundreds of tags inside file, I'm parsing only about 50 of them. However, I'm reading much more than 50 tags -to find those that I want.
Quote
Mine, using ExifTool:
1 file (12.8 MB ORF file) - 387 tags - 53 msec (div 7.74 = 6.847 msec)
-I see: you divided result because number of tags (387 vs 50)... I'm not sure if such result is representative.

Bogdan

BogdanH

Quote from: Phil Harvey on February 19, 2011, 03:13:41 PM
If you want to compare times, I suggest using a standard set of test files -- perhaps something like the Canon samples from the ExifTool Meta Information Repository.

Thank you for link -I didn't know about those collections. Very handy, because filesize factor is practically eliminated. System is capable to keep all those files in cache (I think), so there's almost no i/o performance penality and "measuring" is more concentrated on parsing speed.
Now I'm even more convinced about i/o performance being the major bottleneck.

Bogdan

MOL

Quote from: BogdanH on February 20, 2011, 04:07:55 AM
-yes, that's correct: from hundreds of tags inside file, I'm parsing only about 50 of them. However, I'm reading much more than 50 tags -to find those that I want.

But only for the 'Quick' option, right?

Is there a chance that you can build an experimental version of your application that also displays the elapsed time for loading the meta tags?

BogdanH

Yes, I use my procedure only for Quick view and for showing tag values in Filelist pane (when Details<>Standard). In both cases the same procedure is used which does the same thing, the same way: reads about 50 tags -even only few of them are shown in Filelist pane, though.
After doing some tests today (using real image files, using files that Phil suggested, reading them from average non-indexed HDD, reading then from fast SSD,...), I came to conlusion: even if my procedure would do in almost zero time, in reality, it would take about 6ms/file on average HDD -not worth to bother any further.

About making "experimental" GUI version (for timig). No, I don't plan to make such version public.. because of two reasons:
1. Only I know what my procedure does. Thus, when one would see (say) 3800ms for (say) 400 files, he simply can't know if all files have realy been parsed.. or maybe, I'm cheating to impress?  ;)
2. I don't wish to compete against anyone... I'm not that good in programming.

That doesn't mean I'm not ready to share my limited knowledge. It's just, that this forum is mostly about metadata and less (if at all) about programming...

Greetings,
Bogdan

MOL

#21
Hi Bogdan

It seems you completely misunderstood me. I'm sorry if it came across that way, but it was never my intention to compete against you. I only wanted to help you because I couldn't quite understand where your claim that GeoSetter is faster than ExifToolGUI came from. So don't worry about providing a test version if you feel uncomfortable with it. Nevertheless, I've almost finished the application and will upload it here either tomorrow or the day after. Hope you don't mind, really. It's just a test to see what is possible speed-wise with ExifTool

Cheers
Uwe


EDIT:
Just thought about it. If you want I could also send it to you via e-mail, and you play with it at home. Let me know what you prefer.

BogdanH

Hi,

I only have few minutes this time.. No, it seems I wasn't clear (in my English). It's not you I had in mind -it was ment in general: I just don't wish to make a race track here. It's opposite: as mate (Delphi user), I'm glad you're here.
Of course I'll be happy, if you post your app in this forum or elsewhere... I'm allready curiosus :)
Must go now...

Greetings,
Bogdan

MOL

Okay, here we go. The current test program uses QueryPerformanceCounter to measure the execution time. Depending on how many processes are running in the background, the measured time might differ. Caching mechanisms within windows also influence the time. You will see that the 'Quick' option executes very fast. On JPG usually around 2 milliseconds, on other file formats mostly around 4 msec.. ExifTool execution times are longer, of course, and are usually around 1/2 sec. per file for several hundred meta tags. I didn't have the time to read up on how to implement the stay_open option yet. Can you give me a hint - especially what you pass to the command line once the args file has been created? I will update the file then.

The program can display a range of general, EXIF and IPTC data in 'Quick' mode. Just play with some files. In 'Standard' mode it retrieves all meta tags by default. If you want to change that, right-click on the treeview on the right and select an option from the popup menu.

To install, just copy test.exe and exiftool.exe into the same directory (not under Program Files !) and run.

Hope you like it. Let me know if you have questions and please post how my application compares to yours. I'm always interested in how to optimize the procedures (much of it is actually ripped from a large commercial application) further.

Uwe


I couldn't upload to the forum directly, because the file is too big. I've sent you a message with the download link instead.

BogdanH

Hi Uwe,

Just downladed it -thanks! It's late now (22:10PM as I'm writting), so I'll try it tomorrow.

However, as this is getting off-topic, I suggest next time you open new thread (maybe in another forum section.. Phil?). I think that's OK as long we are discussing metadata related to Exiftool.

Bogdan

Phil Harvey

Quote from: BogdanH on February 21, 2011, 04:21:12 PM
I suggest next time you open new thread (maybe in another forum section.. Phil?).

I don't have separate forums for exiftool developers and users, so as a separate topic I suppose this would have fit best in the exiftool application forum.  But in this case the discussion arose naturally from questions about ExifToolGUI, so I don't see anything wrong with the way it progressed here.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).