INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Skeptical About Image Support  (Read 2535 times)

Doof

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5908
  • Farm Animal Stupid
Skeptical About Image Support
« on: July 10, 2020, 12:34:29 pm »

MJ7 (not sure) - MJ8 - MJ9 - MC10 - MC11 - MC12 - MC13 - MC14 - MC15 - MC16 - MC17 - MC18 - MC19 - MC20 - MC21 - MC22 - MC23 - MC24 - MC25 - MC26 ...

MJ7 was the first version I used. I remember being super skeptical when they added image support but now it's literally the only thing that's helping me keep them all organized.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #1 on: July 10, 2020, 01:16:00 pm »

MJ7 was the first version I used.
MJ8 > MC9 onwards. Around 17 years... How time flies by eh?

I remember being super skeptical when they added image support but now it's literally the only thing that's helping me keep them all organized.
This. MC is as important to me for images, probably more so, as audio. For management, nothing out there can compete with MC. I really don't get why more users haven't embraced it for photos. Granted, it may have taken something like a year to get all the tags in order, but, that was mostly due to me taking my time with them so that it didn't turn into a painful chore... there were something like 9,500 files to get through at that time. Integration with Adobe Lightroom has really sped up my workflow no end.

MC has allowed me to organise them on the hard drive in such a way as, if I'm suddenly not around, family will make perfect sense of the folder structure.
Slideshows to music are our most used options in Theater View.

Doof

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5908
  • Farm Animal Stupid
Re: Skeptical About Image Support
« Reply #2 on: July 10, 2020, 02:00:09 pm »

MC has allowed me to organise them on the hard drive in such a way as, if I'm suddenly not around, family will make perfect sense of the folder structure.

Probably better for a separate thread but I'd be curious to know what structure you settled on. I gave up on trying to find anything else that made sense so I finally just dumped them into a mostly date-based structure.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #3 on: July 10, 2020, 03:33:22 pm »

Hi Doof, I'll get back to you later, maybe when the wife's gone to sleep! Have a look in the Zelda thread over in 3rd party, I've posted the image portion of my rename expression for directories in there, that might give you some clues as to what I'm doing....

RoderickGI

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 8186
Re: Skeptical About Image Support
« Reply #4 on: July 10, 2020, 06:40:35 pm »

I really don't get why more users haven't embraced it for photos.

I really do need to start sorting all my photos. I have a lot.

If face tagging was supported inside MC, I might have started by now. I should investigate how well it works with Lightroom. But I tend to use Photoshop rather than Lightroom, so I would have a bit of a learning curve there as well.

Maybe if there was a tutorial all in one place, which would be in the Wiki, and if it didn't require lots of custom fields and complex expressions...  ;)
Logged
What specific version of MC you are running:MC27.0.27 @ Oct 27, 2020 and updating regularly Jim!                        MC Release Notes: https://wiki.jriver.com/index.php/Release_Notes
What OS(s) and Version you are running:     Windows 10 Pro 64bit Version 2004 (OS Build 19041.572).
The JRMark score of the PC with an issue:    JRMark (version 26.0.52 64 bit): 3419
Important relevant info about your environment:     
  Using the HTPC as a MC Server & a Workstation as a MC Client plus some DLNA clients.
  Running JRiver for Android, JRemote2, Gizmo, & MO 4Media on a Sony Xperia XZ Premium Android 9.
  Playing video out to a Sony 65" TV connected via HDMI, playing digital audio out via motherboard sound card, PCIe TV tuner

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #5 on: July 11, 2020, 04:34:52 am »

Probably better for a separate thread but I'd be curious to know what structure you settled on. I gave up on trying to find anything else that made sense so I finally just dumped them into a mostly date-based structure.
Many years ago, I decided that rather than use the default "People, Places, Events" tags, I would put all information in Keywords, nested appropriately, using exclamation marks to bring the branches to the top, similar to Windows folder viewing, with folders first, then files.

I then use various expression based fields to pull info out of keywords as required. For example, I have "Population, Location and Occassion" fields. These are mostly for Theater View at the request of Family.

I really like that MC uses the date for photo albums by default, but, I have auto import switch that around to yyyy/MM/dd as they then sort more sensibly.

I mostly shoot in RAW, and, as I never fully embraced MC's RAW handling, I've used Lightroom from day 1. From there, I export to a folder MC watches, where it applies some tag on import magic...

Once imported, these are pretty much good to go, thanks, in part, to this. I change the album if necessary, which is not often, then run rename, move & copy on them to file them in their final resting place.

If we've been "Day Tripping", they go into the "Day Tripping > Location > yyyy - MM" folder
If they are from an "Event", they go into the "Occassion > yyyy - MM" folder
If the Album is not a date, they go into the "Picture Albums > Album" folder

What's left will just be snaps, so they go into the "Photographer > yyyy - MM" folder, except mine, which go into "Photographer > Camera > yyyy - MM".

That's the basics of  my HDD filing. Also, inside MC...

Auto import also tags every photo imported with birthday dates for around a dozen people. This itself doesn't immediately do anything at all, but, as soon as any of those people appear in the keywords tag, this kicks in and instantly returns their age at the time the photo was taken. This is hugely popular here, the girls love seeing that stuff in the caption when they're viewing slideshows.
Code: [Select]
if(isequal([keywords],family\vada,8),       
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//30),0,,Months,Month)),

if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Years))),)

For each person, you need two fields, one for the birth date, and one for the maths and "Formatdate()". Once set up, they really are, truly, "set & forget", so, you can mark them as hidden fields in the field manager to remove the noise from the field list.

I really do need to start sorting all my photos. I have a lot.

If face tagging was supported inside MC, I might have started by now. I should investigate how well it works with Lightroom. But I tend to use Photoshop rather than Lightroom, so I would have a bit of a learning curve there as well.

Maybe if there was a tutorial all in one place, which would be in the Wiki, and if it didn't require lots of custom fields and complex expressions...  ;)
I know what you mean, but it's all we have at the moment, so for me, it's best to embrace it and marvel at what is actually possible. Lightroom does facial recognition, and I believe that MC reads this, and imports the data into its [People] field. Lightroom's facial recognition really struggles identifying between my daughter and her daughter, which I find fascinating :)

The single biggest ball-ache is getting the files all tagged. There is no quick way to do this. Way back in the MC12 days, I tried many many different programs searching for that holy grail of quick and simple tagging, and for me, there simply wasn't one. Programs that used a "keyword brush" were about as close at it got, but everything else about them was so seriously lacking, I just set about the slog of first time MC tagging. Pane tagging is a god-send here.

Sometime up the road from that, I started using Lightroom for RAW images taken with my new NIKON toy. I picked a photo, added every keyword used in MC to it, and imported that into Lightroom, sorted them out in Lightroom (easy to do), and from there, tags applied in Lightroom, yes, even new ones, are seamlessly imported into MC's nested keyword field. Once set up, it just works.

Naturally, we are not all wired up the same, so just the thought of this would be an instant turn off for some, or intriguing for others. Me? Very happy indeed, though I've been through that initial tagging trauma some years ago now :)

-marko


Ferdi

  • World Citizen
  • ***
  • Posts: 195
Re: Skeptical About Image Support
« Reply #6 on: July 13, 2020, 10:30:45 am »

Since Lightroom has been mentioned, I finally dare to ask the question: what’s the value add    for Lightroom users?

LR has reasonably well metadata / tagging features, face recognition, cloud sync. You can set up the equivalent to MC Library Views to navigate your collection. LR Is where photos are first imported, filed, developed etc.
What more do I get when using MC for photos, other than the fun of more metadata fiddleing?
I should add that I upload all my developed photos to my mostly private Flickr account, making them available on any device.

And no, am not down talking MC, am User since Jukebox times and just got the MC27 license.
Logged

Doof

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 5908
  • Farm Animal Stupid
Re: Skeptical About Image Support
« Reply #7 on: July 14, 2020, 03:55:30 pm »

Many years ago, I decided that rather than use the default "People, Places, Events" tags, I would put all information in Keywords, nested appropriately, using exclamation marks to bring the branches to the top, similar to Windows folder viewing, with folders first, then files.

I then use various expression based fields to pull info out of keywords as required. For example, I have "Population, Location and Occassion" fields. These are mostly for Theater View at the request of Family.

I really like that MC uses the date for photo albums by default, but, I have auto import switch that around to yyyy/MM/dd as they then sort more sensibly.

I mostly shoot in RAW, and, as I never fully embraced MC's RAW handling, I've used Lightroom from day 1. From there, I export to a folder MC watches, where it applies some tag on import magic...

Once imported, these are pretty much good to go, thanks, in part, to this. I change the album if necessary, which is not often, then run rename, move & copy on them to file them in their final resting place.

If we've been "Day Tripping", they go into the "Day Tripping > Location > yyyy - MM" folder
If they are from an "Event", they go into the "Occassion > yyyy - MM" folder
If the Album is not a date, they go into the "Picture Albums > Album" folder

What's left will just be snaps, so they go into the "Photographer > yyyy - MM" folder, except mine, which go into "Photographer > Camera > yyyy - MM".

That's the basics of  my HDD filing. Also, inside MC...

Auto import also tags every photo imported with birthday dates for around a dozen people. This itself doesn't immediately do anything at all, but, as soon as any of those people appear in the keywords tag, this kicks in and instantly returns their age at the time the photo was taken. This is hugely popular here, the girls love seeing that stuff in the caption when they're viewing slideshows.
Code: [Select]
if(isequal([keywords],family\vada,8),       
if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//30),0,,Months,Month)),

if(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-vada-birthday,0])),elapsed),2),3) Years))),)

For each person, you need two fields, one for the birth date, and one for the maths and "Formatdate()". Once set up, they really are, truly, "set & forget", so, you can mark them as hidden fields in the field manager to remove the noise from the field list.
I know what you mean, but it's all we have at the moment, so for me, it's best to embrace it and marvel at what is actually possible. Lightroom does facial recognition, and I believe that MC reads this, and imports the data into its [People] field. Lightroom's facial recognition really struggles identifying between my daughter and her daughter, which I find fascinating :)

The single biggest ball-ache is getting the files all tagged. There is no quick way to do this. Way back in the MC12 days, I tried many many different programs searching for that holy grail of quick and simple tagging, and for me, there simply wasn't one. Programs that used a "keyword brush" were about as close at it got, but everything else about them was so seriously lacking, I just set about the slog of first time MC tagging. Pane tagging is a god-send here.

Sometime up the road from that, I started using Lightroom for RAW images taken with my new NIKON toy. I picked a photo, added every keyword used in MC to it, and imported that into Lightroom, sorted them out in Lightroom (easy to do), and from there, tags applied in Lightroom, yes, even new ones, are seamlessly imported into MC's nested keyword field. Once set up, it just works.

Naturally, we are not all wired up the same, so just the thought of this would be an instant turn off for some, or intriguing for others. Me? Very happy indeed, though I've been through that initial tagging trauma some years ago now :)

-marko

I love this. Definitely going to steal this.
Logged

raldo

  • Citizen of the Universe
  • *****
  • Posts: 1102
Re: Skeptical About Image Support
« Reply #8 on: July 14, 2020, 04:59:18 pm »

A while ago, I wrote up my workflow which involves both MC and Lightroom

I'm posting this to as a warning wrt. working with Lightroom and MC together. It's not MC's fault, by the way. I'm using Lightroom for facetagging and geotagging.

Here follows my solution to this which is a bit simpler and fits my workflow somewhat better.
(1) Photos are auto imported into MC from a Dropbox camera uploads folder
(2) In MC, I prune the imported photos and tag the keywords of the remaining photos using a hierarchical scheme for events
(3) I backup the Keywords tags of all (new) photos to a custom KeywordsBackup tag
(4) Using MC, I move the photos to a folder where I import them into Lightroom
(5) In Lightroom I adjust geopositions. Using Jeffrey Friedls LR Geo plugin, I import City/State/Location data from Google.
(6) In Lightroom I tag facedata.
(7) using a custom view which lists files in which the files which the tags Keyword and KeywordBackup differ, I can restore jumbled up keywords by copying KeywordBackup back to Keyword.

(MC will automatically import changes made in Lightroom in the Keyword and People fields)

So, using MC's  excellent view and expression language features I can basically fix issues that have been know for years in Lightroom (and which they'll probably never fix)

Logged

Ferdi

  • World Citizen
  • ***
  • Posts: 195
Re: Skeptical About Image Support
« Reply #9 on: July 15, 2020, 04:17:31 am »

Thanks, Raldo. I'll take a closer look at that workflow: First MC, then LR. I just have never thought to use MC for photos, as LR works quite well for me (in particular with the combo with Flickr).

Since you mentioned J Friedl - I use his Geo and Flickr plugins - do you know how to bring in his tags into MC? In particular the 'uploaded to flickr' tag?
Logged

raldo

  • Citizen of the Universe
  • *****
  • Posts: 1102
Re: Skeptical About Image Support
« Reply #10 on: July 15, 2020, 04:44:13 am »

If the tag is written to exif keyword tag then it'll show up. MC. I'd guess it will since Friedl is quite knowledgeable.

You could use Exiftool if it doesn't to inspect the metadata

Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #11 on: July 15, 2020, 01:17:38 pm »

I love this. Definitely going to steal this.
It was the result of this earlier thread. It's brilliant, and, Matt fixed the "68 year old" bug mentioned in that thread, so there's nothing standing in its way now. Let me know if you need any help with it. The original goal was to view pics of children/parents/grandparents at the same age... Trust me, it's freaky!! :D

Since Lightroom has been mentioned, I finally dare to ask the question: what’s the value add    for Lightroom users?

LR has reasonably well metadata / tagging features, face recognition, cloud sync. You can set up the equivalent to MC Library Views to navigate your collection. LR Is where photos are first imported, filed, developed etc.
What more do I get when using MC for photos, other than the fun of more metadata fiddleing?
I should add that I upload all my developed photos to my mostly private Flickr account, making them available on any device.

And no, am not down talking MC, am User since Jukebox times and just got the MC27 license.

I personally find it much easier going LR first > Export to MC. The thread linked to in my earlier post has all the details for getting the LR keyword heirachy imported directly into MC, so, they arrive there practically good to, already post processed and tagged.

I export at 1920 x 1080 as that's all that's needed for viewing on the TV.

Once in MC, they are all available in Theater View in any way you choose, and, the best, for me at least, is slideshows to music, kicked off with a press on "Play All" with the remote. My personal favourite of those, is "Landscapes to an instrumental sound track".

Images in MC are brilliant, asset management is second to none, though I admit, you have to think outside the box sometimes to get what you want, like the "Ages" thing I mentioned earlier.

There really is not much "Right/Wrong" involved here, just what works best for you. I'm happy that the originals are always safe (and backed up) in LR.

-marko

park

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2358
  • I wish I had more to say!
Re: Skeptical About Image Support
« Reply #12 on: July 21, 2020, 03:05:16 am »

The thing that stopped me using MC for images was that i wouldnt get nice rendering of the raw images when playing them. If i edited the raw files in lightroom i belive that lightroom saves a jpeg preview of the edited photo in the dng file, but MC was decoding the raw file using its own filters making the edit work I'd done in Lightroom redundant.

Perhaps MC is doing the right thing (playing the highest resolution raw data rather than the embedded preview), or perhaps my understanding of how it all works is incorrect.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #13 on: July 21, 2020, 09:33:42 am »

I keep the RAW files out of MC and do Lightroom jpg exports for MC. MC allows for better consumption, and far superior accessibility. Anyone in the family can just pick up the remote and in just a few seconds they're enjoying their slideshow.

GaryG45

  • Recent member
  • *
  • Posts: 38
Re: Skeptical About Image Support
« Reply #14 on: July 21, 2020, 04:50:04 pm »

@Park, For Nikon raw files the jpeg preview is inserted into the raw file when the photo is taken.  The DNG file is a wrapper for the raw file, so it includes the jpeg preview.

I'll have to study these processes further because I have been thinking about using MC for my photos.  I had been thinking about exporting the images from Lightroom as jpegs, so this gives me another reason to do it. 

Has anyone done anything in MC with scanned photos where date taken and sometimes the month and year are unknown?  Currently I use a separate folder structure. 
Scanned Photos
     1940s
        1940
        1941
             194106xx for photos I know were taken in June 1941
           .
           .
        1949
        1940s Decade 
             194xxxxx for photos I know were taken in the 1940s

Because these photos are keyworded with people's names and/or locations and sometimes events I'm able to search in Lightroom, but because there is no date captured/taken I cannot put them in date order.  I might have to omit these from MC.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #15 on: August 02, 2020, 04:33:04 am »

I really don't get why more users haven't embraced it for photos.

<snip>...and if it didn't require lots of custom fields and complex expressions...  ;)
I thought about this today as I set about tidying up the formatting of our image slideshow caption on the HTPC, and kind of get your point. Naturally, I think our slideshow caption is brilliant, and viewers definately enjoy the information, and, those times we just want the pictures, a button on the remote control turns off the OSD.

It's been a while, but I think that by default, MC simply uses the [Caption] field for slideshow OSD. This may be fine out of the box, but for us, we would always be looking at each other and discussing how old was so-and-so then?, or where was that? or when was that?

All of that info is right there in MC, so, how hard could it be to have it shown, right there in the caption?




Great eh? This is pretty much 'set and forget', but the 'set' part of that is a bit mental...
All of my image tags are held in the [Keywords] field. This makes exporting from Lightroom to MC absolutely painless as they arrive in MC pretty much fully tagged. I prepend an exclamation mark on all the nested branches to float them to the top of the keywords tree, like so:


It can then be a bit cumbersome in theater view on the HTPC, drilling in and out of keywords for some things, so, I set about extracting that info from [Keywords] into separate custom fields. These give me the contents of the specified branch, minus the root level label.
[Population]:
Code: [Select]
Replace(ListGrep([keywords],!People),!People\,)&datatype=[list]
[Occasion]:
Code: [Select]
Replace(ListGrep([keywords],!Events),!Events\,)&datatype=[list]
[Location]:
Code: [Select]
Replace(ListGrep([keywords],!Places),!Places\,)&datatype=[list]
On the second line, the photographer, camera, and lens information are simple MC library fields, but, we need to try and format the caption to be grammatically correct regardless of the camera name, using "an" and "a" correctly, and only displaying lens info if it is actually present.

Finally, we track the ages of some people...

Among other things, auto import tags every photo imported with the raw birth date of each of these people, then, if any of them become tagged in a photo, their corresponding library field wakes up and calculates their age at the time the photo was taken, like so:
Code: [Select]
if(isequal([keywords],friends\alex,8),       
if(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),days,8),
ifelse(
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),7,3),removeright(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),7) Days,
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//7),0,,Weeks,Week),
!isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),60,3),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//30),0,,Months,Month)),

if(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),:,8),listitem(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),0,:) Hours,
ifelse(isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),hours,8),formatnumber(math(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed))//24),0,,Days,Day),
isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2),3) Year,
!isequal(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2,3),removeright(formatnumber(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),2),3) Years))),)
auto import:


I also created an "Age" tree for use in a standard panes view, which can be interesting fun:
Code: [Select]
listbuild(1,;,
ifelse(
isequal([Age-Vada],hour,8),Hours\[Age-Vada],
isequal([Age-Vada],day,8),Days\[Age-Vada],
isequal([Age-Vada],week,8),Weeks\[Age-Vada],
isequal([Age-Vada],month,8),Months\[Age-Vada],
isequal([Age-Vada],year,8),Years\[Age-Vada]),
ifelse(
isequal([Age-Caroline],hour,8),Hours\[Age-Caroline],
isequal([Age-Caroline],day,8),Days\[Age-Caroline],
isequal([Age-Caroline],week,8),Weeks\[Age-Caroline],
isequal([Age-Caroline],month,8),Months\[Age-Caroline],
isequal([Age-Caroline],year,8),Years\[Age-Caroline]),
ifelse(
isequal([Age-Tracy],hour,8),Hours\[Age-Tracy],
isequal([Age-Tracy],day,8),Days\[Age-Tracy],
isequal([Age-Tracy],week,8),Weeks\[Age-Tracy],
isequal([Age-Tracy],month,8),Months\[Age-Tracy],
isequal([Age-Tracy],year,8),Years\[Age-Tracy]),
ifelse(
isequal([Age-Stephen],hour,8),Hours\[Age-Stephen],
isequal([Age-Stephen],day,8),Days\[Age-Stephen],
isequal([Age-Stephen],week,8),Weeks\[Age-Stephen],
isequal([Age-Stephen],month,8),Months\[Age-Stephen],
isequal([Age-Stephen],year,8),Years\[Age-Stephen]),
ifelse(
isequal([Age-elli],hour,8),Hours\[Age-elli],
isequal([Age-elli],day,8),Days\[Age-elli],
isequal([Age-elli],week,8),Weeks\[Age-elli],
isequal([Age-elli],month,8),Months\[Age-elli],
isequal([Age-elli],year,8),Years\[Age-elli]),
ifelse(
isequal([Age-Nettie],hour,8),Hours\[Age-Nettie],
isequal([Age-Nettie],day,8),Days\[Age-Nettie],
isequal([Age-Nettie],week,8),Weeks\[Age-Nettie],
isequal([Age-Nettie],month,8),Months\[Age-Nettie],
isequal([Age-Nettie],year,8),Years\[Age-Nettie]),
ifelse(
isequal([Age-Mark],hour,8),Hours\[Age-Mark],
isequal([Age-Mark],day,8),Days\[Age-Mark],
isequal([Age-Mark],week,8),Weeks\[Age-Mark],
isequal([Age-Mark],month,8),Months\[Age-Mark],
isequal([Age-Mark],year,8),Years\[Age-Mark]),
ifelse(
isequal([Age-MarkB],hour,8),Hours\[Age-MarkB],
isequal([Age-MarkB],day,8),Days\[Age-MarkB],
isequal([Age-MarkB],week,8),Weeks\[Age-MarkB],
isequal([Age-MarkB],month,8),Months\[Age-MarkB],
isequal([Age-MarkB],year,8),Years\[Age-MarkB]),
ifelse(
isequal([Age-amiee],hour,8),Hours\[Age-amiee],
isequal([Age-amiee],day,8),Days\[Age-amiee],
isequal([Age-amiee],week,8),Weeks\[Age-amiee],
isequal([Age-amiee],Month,8),Months\[Age-amiee],
isequal([Age-amiee],year,8),Years\[Age-amiee]),
ifelse(
isequal([Age-tracy c],hour,8),Hours\[Age-tracy c],
isequal([Age-tracy c],day,8),Days\[Age-tracy c],
isequal([Age-tracy c],week,8),Weeks\[Age-tracy c],
isequal([Age-tracy c],Month,8),Months\[Age-tracy c],
isequal([Age-tracy c],year,8),Years\[Age-tracy c]),
ifelse(
isequal([Age-alex],hour,8),Hours\[Age-alex],
isequal([Age-alex],day,8),Days\[Age-alex],
isequal([Age-alex],week,8),Weeks\[Age-alex],
isequal([Age-alex],Month,8),Months\[Age-alex],
isequal([Age-alex],year,8),Years\[Age-alex]),
ifelse(
isequal([Age-megan],hour,8),Hours\[Age-megan],
isequal([Age-megan],day,8),Days\[Age-megan],
isequal([Age-megan],week,8),Weeks\[Age-megan],
isequal([Age-megan],Month,8),Months\[Age-megan],
isequal([Age-megan],year,8),Years\[Age-megan]),
ifelse(
isequal([Age-kinley],hour,8),Hours\[Age-kinley],
isequal([Age-kinley],day,8),Days\[Age-kinley],
isequal([Age-kinley],week,8),Weeks\[Age-kinley],
isequal([Age-kinley],month,8),Months\[Age-kinley],
isequal([Age-kinley],year,8),Years\[Age-kinley]))&datatype=[list]

Again, in the OSD, when more than one person, this needs to be presented in a grammatically correct way, and, if there are no ages to display, just show the date, but if there are ages to display, show the date at the end, separated with a " - "

Getting back to the final OSD output:

First, here's the actual expression code entered into the slideshow caption setting in MC's options:
Code: [Select]
ifelse(isequal([osd],;!,8),replace([osd],;!,/,/ ),isequal([osd],;,8),replace([osd],;,/,/ ),1,[osd])
Photographer: [artist], using if(regex([camera],/#^([aAeEiIoOuUhH])#/,0),an,a) if(isequal([camera],nikon d5000,8),[camera] with if(isequal([lens],10,8),a,an) removeright([lens],10) lens at [focal length],[camera])
[baby's age][baby's date]

On the first line, we pose a series of questions:
if [Caption] is not empty, use that, otherwise,
if [Occasion] is not empty, use that, otherwise,
if [Location] is not empty, use that, otherwise, leave it blank.

For this, and (laughably perhaps) a bit of simplicity, all of the heavy lifting is performed in the [OSD] field, which goes like so:
Code: [Select]
ifelse(!isempty([caption]),[caption],!isempty([occasion]),if(isequal([occasion],!,8),regex([Occasion],/#!(.+)\\(.+)#/,-1,0)if(isequal([R1],\!,8),replace([R1],\!,/,/ ),[R1]): [R2],[occasion]),!isempty([location]),if(isequal([location],!,8),regex([location],/#!(.+)\\(.+)#/,-1,0)if(isequal([R1],\!,8),replace([R1],\!,/,/ ),[R1]): [R2],if(isequal([location,0],;,8),replace([location,0],;,:/ ),[location])),1,[caption])What this does, is pose the questions asked above, and then format the result, removing semi-colons, back slashes and exclamation marks, inserting commas and spaces where required, with final bits of tidying up performed via a second pass over the output of this OSD field.

On the second line, the photographer and camera info is cleaned up and presented using:
Code: [Select]
Photographer: [artist], using if(regex([camera],/#^([aAeEiIoOuUhH])#/,0),an,a) if(isequal([camera],nikon d5000,8),[camera] with if(isequal([lens],10,8),a,an) removeright([lens],10) lens at [focal length],[camera])
Finally, the third line brings us back to people's ages:
The [baby's age] field gathers and cleanly presents any age information if it is present:
Code: [Select]
if(regex(listbuild(1,=,ifelse(isequal([keywords],people\family\kinley,8),Kinley/ aged/ [age-kinley]),ifelse(isequal([keywords],people\family\amiee,8),Amiee/ aged/ [age-amiee]),ifelse(isequal([keywords],people\family\elli,8),Elli/ aged/ [age-elli]),ifelse(isequal([keywords],people\family\vada,8),Vada/ aged/ [age-vada]),ifelse(isequal([keywords],people\family\stephen,8),Stephen/ aged/ [age-Stephen]),ifelse(isequal([keywords],people\family\tracy,8),Tracy/ aged/ [age-tracy]),ifelse(isequal([keywords],people\family\caroline,8),Caroline/ aged/ [age-caroline]),ifelse(isequal([keywords],people\family\markb,8),MarkB/ aged/ [age-markb]),ifelse(isequal([keywords],people\family\nettie,8),Nettie/ aged/ [age-nettie]),ifelse(isequal([keywords],people\friends\Alex,8),Alex/ aged/ [age-alex]),ifelse(isequal([keywords],people\friends\megan,8),Megan/ aged/ [age-megan]),ifelse(isequal([keywords],people\friends\Tracy c,8),Tracy C/ aged/ [age-tracy c]),ifelse(isequal([keywords],people\family\markw,8),Mark/ aged/ [age-mark])),/#^(.+?)(?:=([^=]+))?$#/),listbuild(1, / and/ , replace([R1], =, /,/ ), [R2]), )MrC kindly provided the regex magic for this one. As you add ages to track, you just need to add an "IfElse()" condition for that person and the expression takes care of the required grammatical output. It's very clever.

As I also want the date on this third line, on its own if there are no ages, and hyphenated if there are, [baby's date] takes care of that using:
Code: [Select]
ifelse(!isempty([age]),/ - formatdate([date,0],dd MMMM yyyy),1,formatdate([date,0],dd MMMM yyyy))
and there you have it.  ::)
Now, as mental as this appears, very minor tweaking aside, these background fields and expressions have been quietly getting on with it for me for a good ten years or more, and the continued pleasure the results provide for people viewing slideshows on the TV definately makes the initial setup worth the time spent on it.

The challenge to the JRiver team, who I am sure would like to see a jump in users utilising the image capabilities of MC, is to make all of this possible in a way that is friendly for first time users. Similarly, the same applies to the tooltip/theater view file info panel customisation thread. There is no denying it's popularity, but the hoops involved to arrive at those ends is waay beyond the scope of first time users.

For MC27, why not build the configurators for these things into MC and so make them easily accessible to everyone :)

References:
Importing Lightroom keyword heirarchy into the MC [Keywords] field.
Deriving Age from Date of photo? (apologies for the seemingly haphazzard presentation of this one)
Create Custom Tooltips/TheaterView Screens Using Dolby etc. Logos (Currently 13 pages long, with 30,800 views)

-marko

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 72367
  • Where did I put my teeth?
Re: Skeptical About Image Support
« Reply #16 on: August 02, 2020, 07:36:19 am »

Thanks for all that, Mark!  Which one are you?
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #17 on: August 02, 2020, 10:58:59 am »

I'm the one with hat 😉😀

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 72367
  • Where did I put my teeth?
Re: Skeptical About Image Support
« Reply #18 on: August 02, 2020, 11:44:12 am »

Ha ha.  Yeah, you're the one who's been drinking.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #19 on: August 15, 2020, 01:02:32 am »

All that above is what happens over the course of several years, trying to satisfy the demands of the ladies of the family while they watch their slideshows!

Out of the box, MC for photos is still very good though. When you've been messing around with weird and wonderful expressions for a while, it's easy to forget that.

I'm actually finding the photo management to be exremely useful. Previously I had no real photo management and I'd simply browse the folders in Explorer which was too cumbersome once a lot of images were involved. For some reason I didn't fully digest that I already had the solution all along in JRiver which I had been using for music/video for quite a few years. I decided to give it whirl and imported all my images. Now I can find the image I need by location, date, person, camera, you name it by utilising JRiver's powerful search function. One of my favourite features (albeit quite a modest one) is the ability to 'locate on Google Maps'.

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
How does your MC Open?
« Reply #20 on: September 25, 2020, 01:18:52 pm »

Another thing I use images for, is, when MC opens...

Among those that know me, I'm famously anti-social... really, not considered a 'people person' at all. I generally find 'people' to be too much like hard work... Although, having said that, I'm often told I'm a better people person than I give myself credit for, so, who knows :)

Anyhoo, while I have many, many great photos featuring people who I seriously love, my absolute favourite photos are ones that remind me of calm and relaxing times, and those do not feature people! Our library has many such photos, most, but not all, taken by yours truly. There's a couple of glynor's in there that I really enjoy.

I have a tab that displays one random image that doesn't contain people, has landscape orientation, and is scored 5 (highest).... Todays offering...


This is, IMVHO, a great way for MC to open... Always with something to make you exhale, smile, and go ahhhh :)
This was taken at Culzean Castle. I couldn't believe it when this heron flew in and started picking off fish, right in front of us. There's a whole sequence if anyone's interested.
My wife was with me. It was a fantastic day. Relaxing, walking, talking, taking photos, eating ice cream, at the end of a weekend away paid for by our children.

Photos people... They're wasted piling up on your hard drive somewhere, rarely enjoyed by anyone. If that's you... let MC have a look at some... you won't be disappointed :)

-marko

JimH

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 72367
  • Where did I put my teeth?
Re: Skeptical About Image Support
« Reply #21 on: September 25, 2020, 02:08:23 pm »

Great picture!  Bad day at the office for the fish.
Logged

zybex

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2565
Re: Skeptical About Image Support
« Reply #22 on: September 25, 2020, 05:37:07 pm »

Interesting stuff, makes me want to try this sooner than later! Thanks for all the tips Marko.

I was looking at your expressions, and started playing with some of them in Zelda to understand what they do and adapt to my needs. The largest ones are very repetitive, and we now have some new Functions available that can simplify them a lot - this improves readability, makes changes easier, and makes them faster too.

I rewrote the 3 largest ones you have - if you want to try them, check the fieldnames to see if they still match your fields/names.

[Age-Alex] - Simplified using a Save() to store the repetitive calculation in a temp var:
EDIT: Fixed pluralization, was not working right on old code either
Code: [Select]
if(isequal([keywords],friends\alex,8),
save(formatdate(math(now()-([date,0]-[age-alex-birthday,0])),elapsed),_age)/
ifelse(
  isequal([_age],days,8),ifelse(
    isequal([_age],7,3),removeright([_age],7) Days,
    isequal([_age],60,3),formatnumber(math(int(number([_age])//7)),,,Weeks,Week),
    1,formatnumber(math(int(number([_age])//30)),,,Months,Month)),
  isequal([_age],:,8),listitem([_age],0,:) Hours,
  isequal([_age],hours,8),formatnumber(math(int(number([_age])//24)),,,Days,Day),
  1, formatnumber(math(int(number([_age]))),,,Years,Year)),)

Age tree - massively shorter, using ListMix() with a list of the person's names, which are converted to [Age-xxxx] fields:
To add persons, just add the person's name to the ListMix list. The corresponding field must be named [age-Name]
Code: [Select]
ListClean(ListMix(if(Regex([age-[L1]], /#(hour|day|week|month|year)#/,0),FixCase([R1]s)\[age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3)

Third line of the caption, with people's ages - again using ListMix():
To add persons, just add the person's name to the ListMix list, same as above. You could even have a [PersonNames] field holding the list of names and use that in both expressions...
Code: [Select]
Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]$#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)

As far as I could test, these produce the exact same output as the ones you have. If you feel like testing them let me know the results :)
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #23 on: September 26, 2020, 03:22:19 am »

Interesting stuff, makes me want to try this sooner than later! Thanks for all the tips Marko.
You're welcome. I've not mentioned it here yet, but another brilliant thing that can be done is, slideshows with music...

The standard method for this:
1: Begin music playback
2: Begin slideshow
Result: You have a slideshow with music, but...
In Theater View that's a faff, and, this way, the transport buttons (Next, Previous) only work on the image slideshow, there is no control over the music, so if a track plays that is doing your head in, 'Stop' or 'Suffer' are your only two options....

"Grandfathered" way to do this:
Create a smartlist that contains both music and pictures, in Theater View, go to it, do not drill into the file level, from the file list, hit the "Play All" entry in the top roller, and now, you have a slideshow to music, but crucially (for me anyway) the transport buttons now control the music, not the pictures.

My favourite such smartlist is a mix of nature/landscape photos displayed to mellow instrumental tracks. Kick it off, turn off the OSD, and set about your business. Lovely :)

=======================================================================================

I was looking at your expressions, and started playing with some of them in Zelda to understand what they do and adapt to my needs. The largest ones are very repetitive, and we now have some new Functions available that can simplify them a lot - this improves readability, makes changes easier, and makes them faster too.

I rewrote the 3 largest ones you have - if you want to try them, check the fieldnames to see if they still match your fields/names.
Thanks. There will be much in my library that could be streamlined, but, I'm old, and lazy, and if it ain't broke... :)

Age tree - massively shorter, using ListMix() with a list of the person's names, which are converted to [Age-xxxx] fields:
To add persons, just add the person's name to the ListMix list. The corresponding field must be named [age-Name]
Code: [Select]
ListClean(ListMix(if(Regex([age-[L1]], /#(hour|day|week|month|year)#/,0),FixCase([R1]s)\[age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3)
Once "&datatype=[ list]" is appended, this exactly replicates the "Age" tree, but, the view load time, and update time after clicks, is doubled. I tried with both an expression pane, and saving the expression to a library field, and both the same. Counting 'mississipis', the view with my tree version loads and updates in just under one, while the view with listmix() takes two.

Third line of the caption, with people's ages - again using ListMix():
To add persons, just add the person's name to the ListMix list, same as above. You could even have a [PersonNames] field holding the list of names and use that in both expressions...
Code: [Select]
Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]$#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)
In Zelda, this is only returning the age of the last person in the tag.

Thanks for the feedback, out of time so haven't played with the first one yet.

-marko

zybex

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2565
Re: Skeptical About Image Support
« Reply #24 on: September 26, 2020, 11:30:13 am »

Quote
In Zelda, this is only returning the age of the last person in the tag.
Yeah, after I went to bed to was thinking on the expression and I remembered a corner case - "Tracy" would wrongly match if "Tracy C" is in the keywords. So I grabbed my phone and "fixed" the code without testing  ::)  I added a single "$" which broke it. The correct fix is now highlighted:
Replace(ListFormat(ListClean(ListMix(if(Regex([keywords],/#(family|friends)\\[L1]($|;)#/,0),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)

Another way to write it without using Regex:
Replace(ListFormat(ListClean(ListMix(if(or(isequal([Keywords];,family\[L1];,8),isequal([Keywords];,friends\[L1];,8)),[L1] aged [age-[L1]],),,
Kinley;Amiee;Elli;Vada;Stephen;Tracy;Caroline;MarkB;Nettie;Alex;Megan;Tracy C;Mark),3),2),&,and)

Zelda says both these expressions take around 3ms, same as your original expression.
Note: your expression says "MarkW" in one place, and "Mark" in others. I went with "Mark" (and MarkB as a different person).

Regarding the age tree expression... on my PC Zelda says your expression takes 6-8ms, and mine takes 3-4ms (per File/photo). I don't have thousands of photos on the library though, so I can't replicate your scenario exactly yet. I'm not sure why it's slower for you.
Logged

marko

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 9119
Re: Skeptical About Image Support
« Reply #25 on: September 27, 2020, 09:29:07 am »

Works well and has been adopted. A great working example, thank you.

Fixed my 'Headcount' expression myself too, so not completely out the game yet :)
Code: [Select]
ListItem(No People;math(listcount([keywords],!People) - 1) Person;math(listcount([keywords],!People) - 1) People,min(max(math(listcount([keywords],!People) - 1),0),2))
I would like to reiterate that these things are used because they add value to our MC experience with photos, and some cases, just because we can, but are by no means essential nor required. The defaults in MC have been well chosen, so don't let these crazy looking expression strings put you off.

zybex

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 2565
Re: Skeptical About Image Support
« Reply #26 on: September 27, 2020, 01:57:33 pm »

Fixed my 'Headcount' expression myself too, so not completely out the game yet :)
Code: [Select]
ListItem(No People;math(listcount([keywords],!People) - 1) Person;math(listcount([keywords],!People) - 1) People,min(max(math(listcount([keywords],!People) - 1),0),2))
Clever solution :)

Quote
I would like to reiterate that these things are used because they add value to our MC experience with photos, and some cases, just because we can, but are by no means essential nor required. The defaults in MC have been well chosen, so don't let these crazy looking expression strings put you off.

Fully agree, customization is nice but not at all required.
Logged
Pages: [1]   Go Up