You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I wanted to share what I've been doing and ask if I'm on the right track. It's long...
I'm embarking on a "digital memorabilia" project and trying to find the best medium to display the photos I will be taking of family heirlooms. PicFrame is the main contender.
The main thing I need (besides good photos) is good metadata, specifically a title, a date corresponding to the object's original date, and a caption. I think of it as the little placard you see in museums besides pieces of art, e.g.
[Title] Mona Lisa
[Date] 16th Century
[Caption] It is often said that the Mona Lisa painting was a work that Leonardo da Vinci, by invitation from King François I, brought with him to France....
[Title] Wedding Ring
[Date] August 1953
[Caption] Harry and Maude were married in a small church in Kentucky....
The challenge is, how to populate metadata fields and how to control their display.
The first issue is that there are no good metadata fields for an approximate date. The Windows Comments field might work, but since PicFrame does not store that, I can live with putting the date in the caption:
[Title] Wedding Ring
[Caption] August 1953 - Harry and Maude were married in a small church in Kentucky....
There are so many variations of meta fields that it was difficult to figure out which fields come from where. This table is my best approximation, mostly from reading image_cache.get_exif_info and get_image_meta.GetImageMeta, with bold text indicating PicFrame sources. It looks like PicFrame populates EXIF, then IPTC, then XMP, with latter values overwriting earlier. That's how Headline winds up overwriting the Object Name, originally populated from Title:
Windows property
PicFrame property
EXIF
IPTC
XMP
Title
caption
XPTitle ImageDescription
Caption or Caption (Abstract), Object Name (both populated)
title, description (both populated)
Subject
(none)
XPSubject
(none)
(none)
Rating (1-5 stars)
rating (number)
rating (number)
(none)
rating (number)
Tags (semicolon-separated)
tags (comma-separated string)
XPKeywords (semicolon-separated)
Keywords (array)
subject (array)
Comments
(none)
XPComment
(none)
(none)
(none)
title
(none)
Object Name (populated from Title), Headline
photoshop:Headline
For a Windows user, the obvious candidates for title and caption are the Title and Subject fields that are available by default in Windows Explorer. However, the Subject field is never imported into PicFrame. Rather the Windows Title becomes the PicFrame "caption". PicFrame "title" ultimately comes from the Headline, if present.
So far, the only way I have found to populate Headline is to install the (free) Adobe Bridge software and edit the metadata there. Another free tool, XnView MP, has been handy for finding and verifying meta fields.
The other thing I needed to do was adjust the text display itself:
Put the folder name before the other fields.
Only display the file name if title and caption are empty.
Never display the file extension.
I was able to achieve that with a few modifications to viewer_display.make_text:
def __make_text(self, pic, paused, side=0, pair=False): # noqa: C901
# if side 0 and pair False then this is a full width text and put into
# __textblocks[0] otherwise it is half width and put into __textblocks[position]
info_strings = []
if pic is not None and (self.__show_text > 0 or paused): # was SHOW_TEXT_TM > 0.0
# move folder before title/caption/name
if (self.__show_text & 32) == 32: # folder
info_strings.append(os.path.basename(os.path.dirname(pic.fname)))
if (self.__show_text & 1) == 1 and pic.title is not None: # title
info_strings.append(pic.title)
if (self.__show_text & 2) == 2 and pic.caption is not None: # caption
info_strings.append(pic.caption)
# Suppress file name if title or caption available
# Also, use pic.fname to retrive the name without extension from the OS.
#if (self.__show_text & 4) == 4: # name
# info_strings.append(os.path.basename(pic.fname))
if (self.__show_text & 4) == 4 and pic.title is None and pic.caption is None: # name
filename_no_ext = os.path.splitext(os.path.basename(pic.fname))[0] # trims only the extension
info_strings.append(filename_no_ext)
if (self.__show_text & 8) == 8 and pic.exif_datetime > 0: # date
fdt = time.strftime(self.__show_text_fm, time.localtime(pic.exif_datetime))
info_strings.append(fdt)
if (self.__show_text & 16) == 16 and pic.location is not None: # location
location = pic.location
# search for and remove substrings from the location text
if self.__geo_suppress_list is not None:
for part in self.__geo_suppress_list:
location = location.replace(part, "")
# remove any redundant concatination strings once the substrings have been removed
location = location.replace(" ,", "")
# remove any trailing commas or spaces from the location
location = location.strip(", ")
info_strings.append(location) # TODO need to sanitize and check longer than 0 for real
# move folder before title/caption/name
#if (self.__show_text & 32) == 32: # folder
# info_strings.append(os.path.basename(os.path.dirname(pic.fname)))
if paused:
info_strings.append("PAUSED")
final_string = " • ".join(info_strings)
It would be nice if the program allowed setting options to control these behaviors:
Which metadata fields are use for which PicFrame fields (e.g. allow choosing the EXIF fields XPTitle and XPSubject).
In which order to display the PicFrame fields.
Allow suppressing the file name if title or caption is present
Allow suppressing the file extension.
But in the meantime, I think I have found my workarounds.
If I missed or misunderstood any functionality, let me know!
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I wanted to share what I've been doing and ask if I'm on the right track. It's long...
I'm embarking on a "digital memorabilia" project and trying to find the best medium to display the photos I will be taking of family heirlooms. PicFrame is the main contender.
The main thing I need (besides good photos) is good metadata, specifically a title, a date corresponding to the object's original date, and a caption. I think of it as the little placard you see in museums besides pieces of art, e.g.
[Title] Mona Lisa
[Date] 16th Century
[Caption] It is often said that the Mona Lisa painting was a work that Leonardo da Vinci, by invitation from King François I, brought with him to France....
[Title] Wedding Ring
[Date] August 1953
[Caption] Harry and Maude were married in a small church in Kentucky....
The challenge is, how to populate metadata fields and how to control their display.
The first issue is that there are no good metadata fields for an approximate date. The Windows Comments field might work, but since PicFrame does not store that, I can live with putting the date in the caption:
[Title] Wedding Ring
[Caption] August 1953 - Harry and Maude were married in a small church in Kentucky....
There are so many variations of meta fields that it was difficult to figure out which fields come from where. This table is my best approximation, mostly from reading image_cache.get_exif_info and get_image_meta.GetImageMeta, with bold text indicating PicFrame sources. It looks like PicFrame populates EXIF, then IPTC, then XMP, with latter values overwriting earlier. That's how Headline winds up overwriting the Object Name, originally populated from Title:
For a Windows user, the obvious candidates for title and caption are the Title and Subject fields that are available by default in Windows Explorer. However, the Subject field is never imported into PicFrame. Rather the Windows Title becomes the PicFrame "caption". PicFrame "title" ultimately comes from the Headline, if present.
So far, the only way I have found to populate Headline is to install the (free) Adobe Bridge software and edit the metadata there. Another free tool, XnView MP, has been handy for finding and verifying meta fields.
The other thing I needed to do was adjust the text display itself:
I was able to achieve that with a few modifications to viewer_display.make_text:
It would be nice if the program allowed setting options to control these behaviors:
But in the meantime, I think I have found my workarounds.
If I missed or misunderstood any functionality, let me know!
Beta Was this translation helpful? Give feedback.
All reactions