Photos: Show and edit EXIF Tags

Created on 6 Mar 2020  路  21Comments  路  Source: nextcloud/photos

Feature request

User type: Logged-in or public user

User level: Beginners, intermediate or advanced

Description

My photo collection is taken care of with digikam, a really powerful foto managment tool.
In digikam you can give stars to images and use tagging to mark subjects, context or people in the images.

nextcloud gallery Features requested:

  • tags album: clicking on a Tag shows an album with all images with that Tag.
  • gallery should show Tags and Stars from Images when single Image is used.
  • Logged in Users can add tags, which are then being written into the fille (and or filename.xmp file - this would be lighter on syncing changes in metadata) There is a few php exif libraries available to do so.

EXIF is the standard that stores metadata in image files.
The actual values are stored in a format defined by IPTC and XMP
https://de.wikipedia.org/wiki/IPTC-IIM-Standard
https://de.wikipedia.org/wiki/Extensible_Metadata_Platform

Benefit / value

Better usability, Easier to keep in control of the floods of images that are synced.

Before owncloud we had a straight forward Foto Workflow e.g. from digital camera -> import folder, editing -> image library -> sharing with friends.
Nowadays Images pour in from different peoples smartphones/cameras/ other synced devices and adding tags only makes sense if this is can be done by anyone who is sharing those images.

Risk / caveats

Displaying images in Tag based albums would require some thought about which folders or subfolders are beeing scanned for images.
Some users might have been used gallery 3, phtagr, or other image galleries, which use some kind of database or caching of Image Tag information.

Sponsorship

Are you a developer willing to implement this feature?: no
Can you sponsor the development of this feature or do you know someone who can?: yes
We could at least to some extent sponsor work on that feature.

_Originally posted by @epe in https://github.com/nextcloud/gallery/issues/204_

1. to develop discussion enhancement

Most helpful comment

@TurkeyMan please read the entire thread.
We all want that, no one seems to have the time for it. :(

Requirements are as follow:

  1. should be an app
  2. should index metadatas
  3. should make them available through dav (might require server patch)
  4. should be shipped by default

Editable and searchable metadata are not part of the initial specs, might come later.
There is a 290$ bounty to it for sorting by exif (which should be easy once such criterias are fulfilled)

Cheers! :v: :relaxed:

All 21 comments

Is your feature request related to a problem? Please describe.
I use shotwell to organize and tag my photos. Once uploaded to my nextcloud instance I am unable to see the tags set under 'Tagged photos'

Describe the solution you'd like
I would like to be able to browse my photos using the tags set by shotwell (stored in EXIF-data)

Describe alternatives you've considered
None, since this feature seems unavailable

Additional context
See attachement for an example with (nested) tags

naamloos-7827

rikmeijer
_Originally posted by @rikmeijer in https://github.com/nextcloud/photos/issues/225_

Hi,

I would like to see this, but IMHO this should be done in another application. I am particularly concerned with tag editing.
Change EXIF or just rotate the images, emits a hook saying that the image has changed (actually \OC\Files\postWrite). You don't know what change in the image, so this invalidates any type of information that you have about the image, and you have to analyze the image again.

For example:

  • Rotate the image (You only need to change EXIF), all the previews must be done again. It's correct.. :+1:
  • Add a tag called "Holidays" to an image, previews will be done again. That's wrong. :disappointed:
  • Nextcloud Maps allow change the geolocation of images. This is a great feature!. But should you create the preview again?. :sweat_smile:

A real case:
Well, Nextcloud Maps change the geolocation of an image. This emit \OC\Files\postWrite, Our Face Recognition application just know that the image changed, and since don't know what change, should remove the info of this image and must be analyze it again which has a great cost!. :disappointed:

Note that the same would happen if FaceRecogniton change the images adding the regions of the faces into the files. As nobody knows exactly what changed, the preview would be done again, the tags should be loaded again, and the map application would not display this image either. :sweat_smile:
This is inefficient, and can be annoying for the user..

Suggestion:
Must centralize tag management as a new application, or preferably an ImageManager/ImageService/ImageMetadataService 隆? within the Nextcloud/Server core.

  • This should have the methods to change the metadata. setCustumTag(), setRotate(), setGeolocation(), etc.
  • ...and emit hooks with better context. OCP\Image\postRotate, OCP\Image\postGeoChanged, OCP\Image\postTags().

In this way all applications that depend on metadata can interact with greater security.

And as I said I want to see these characteristics, but just try to explain, that a more important background job is needed to do it well. :wink:

Thanks for all,
Regards,
Matias.

Hey @matiasdelellis !
I'm thinking about the same as you!

Must centralize tag management as a new application, or preferably an ImageManager/ImageService/ImageMetadataService 隆? within the Nextcloud/Server core.

That would help a lot. Especially if we just expose the metadata into a dav property, meaning it doesn't break anything. For example using the taken date for sorting, if the info is here, let's use it, if not, meh.

BUT, it complicate the infrastructure. If a new user have to install 15 apps that are just here as plugins this doesn't help easing the setups.

Just to get this straight in my head:
We all want EXIF support. But performance and usability wise it is preferred that all EXIF manipulation is in a central background location.
Since you closed nextcloud/server#5106 I assume that you want NC Photos to be that background Manager, am I correct?

Since you closed nextcloud/server#5106 I assume that you want NC Photos to be that background Manager, am I correct?

Not specifically, but this issue gained lot of attraction lately while the one in server is kinda lost in the thousands of others. So let's focus on dicsussing this here :)

There is already a metadata app. https://github.com/gino0631/nextcloud-metadata
Currently it adds just a tab in the sidebar, which is not really what we want to aim for at Nextcloud. We would like to have this receive a proper api implementation in dav so other apps can use those additional informations. But The sidebar already have lots of tabs and too much can get confusing.

Anyway, there's lots of ideas and desire in this area, we just have to find the sweet spot ;)

I hope that a proper api implementation in dav could allow to tackle also issues like this: https://github.com/nextcloud/server/issues/19114

In several cases bibliographic data is just a peculiar type of file metadata...

I think that tag support would be a killing feature. Right now other sw have support for photo metadata but no one can read photo tag made by digikam or lightroom.

I think that tag support would be a killing feature. Right now other sw have support for photo metadata but no one can read photo tag made by digikam or lightroom.

Please use the github reactions to add your support to a feature :)

I would also love to see this feature becoming available. If possible, please keep compatibility with other external applications in mind. It would be great e.g. if one could easily run e.g. a specialized face recognition application on some machine and then sync back the tags somehow (ideally through EXIF or potentially even some scriptable REST API or the like). Generally, it would be ideal if an application like digikam would become better integrated with nextcloud somehow...

It would be great e.g. if one could easily run e.g. a specialized face recognition application on some machine and then sync back the tags somehow (ideally through EXIF or potentially even some scriptable REST API or the like).

I use this way. I started tagging faces on lightroom, then moved to digikam and noticed that if tags are saved in exif information I can see them in digikam too. The only missing part is on nextcloud.

What I want is to be able to look at my exif sorted photos remotely. Editing them is more of a "nice to have", since I would prefer to do this with dedicated software anyway. Also I think that editing is much harder to implement than simply showing available exif tags. Maybe we could split this issue into two parts, one for showing exif tags and one for editing them?

I agree with @mayonezo and would like to work on a PR for the simpler feature of simply creating NC tags from IPTC keywords on image file import/update. I haven't hacked on NC yet but I assume that's a small amount of code, just not sure whether it's preferred those changes are applied to photos or the nextcloud-metadata app, where there is also a discussion https://github.com/gino0631/nextcloud-metadata/issues/20

One possible UI/UX issue I can think of for the readonly aspect of the file-meta tags would be users thinking they can apply tags to their photos in the NC UI and these would be written back to the image files and show up in their desktop photo manager - but maybe that use-case can just be a README or tooltip note, since I'm pretty sure everyone using those photo managers aren't planning to also use the NC UI for editing.

haven't hacked on NC yet but I assume that's a small amount of code, just not sure whether it's preferred those changes are applied to photos or the nextcloud-metadata app, where there is also a discussion gino0631/nextcloud-metadata#20

Eheh, in my dreams yes ;)
Unfortunately this is not as easy, otherwise, someone would have done it already :see_no_evil:

The issue is that we want metadata integrated within nextcloud, not with an external app. But how the current metadata app is not quite what we want as UI/UX.
See https://github.com/nextcloud/photos/issues/226#issuecomment-595748443

Yeah, I get it that the "bigger picture" including editing is probably not so straight-forward @skjnldsv, but I'm only talking about addressing the use case you referenced in https://github.com/nextcloud/photos/issues/226#issuecomment-595683574, which I think could add a lot of value right now and satisfy a lot of users needs (like mine and the other folks that upvoted https://github.com/nextcloud/photos/issues/226#issuecomment-624609017). Like @jokerigno said, I can't find any other FOSS software that does this right now and it is a key feature for users who use IPTC keywords written by desktop apps to files for organizing and sharing photos.

This is a current itch I have to scratch and I would like to contribute. I'm worried the other larger scope metadata solution being talked about here may take quite a bit of time. So do you think this high-value/lower effort iterative approach makes sense? And if so, should it be a PR to photos, or should it be its own app? If it were a PR to photos then maybe it could be a configurable personal setting (default to off).

Thoughts?

It should be integrated into server in my opinion.
As a shipped app. :)

The first step to just read the tags could be a nice one, definitely.
And then improve towards an editable API :thinking:

Once the tags are available via DAV as properties (as well as via the php Files api of course), it will be easy to forward them in lots of places (photos)

I also tend to see this as a general functionality/tool to import information from files - starting with IPTC from within photos and videos, but not limited to those in the long term.

@skjnldsv I'm starting to look into this (might take me a bit since I've never hacked on NC and haven't written any PHP for 15 years).

It should be integrated into server in my opinion.
As a shipped app. :)

Okay, so should I open a separate issue in server, such as "Create and update DAV properties and Nextcloud tags from file metadata" and reference this issue, then? Are there any important differences between a regular app and a "shipped app" that I should take into account?

Once the tags are available via DAV as properties (as well as via the php Files api of course), it will be easy to forward them in lots of places (photos)

So the DAV properties would be the authoritative list of metadata options that could be configured (via user settings UI) to be converted into tags (systemtag) on file create/update event hooks?

I'm having a bit of trouble finding out how the DAV properties described in the docs are persisted and can be modified. The filecache table seems to reflect some properties, but not everything that's listed as "supported", and the properties table is empty on my instance.

Sorry if this isn't the right place for this clarification, but I didn't have any luck on IRC or the forums yet. Looks like basic/default properties like contenttype are mapped to the filecache table somewhere and the properties table is used to persist custom properties via PROPPATCH.

In lieu of feedback I've gone ahead and started a branch on the related nextcloud-metadata issue to support the user configurable creation of NC tags from file metadata. I don't see the point of DAV properties right now and there is already repurposable code in the nextcloud-metadata project - which a fair number of folks seem to already be using.

nextcloud-metadata will have to be updated once the file side-tabs view goes away in NC20, but I just don't feel like there is enough guidance to propose this smaller metadata-tags feature as a near-term enhancement to nextcloud/server right now, and it would probably get bogged down in architectural discussions before a PR was merged in, anyway.

Also, it seems to me that iterating on features like this in third-party apps and then working with those apps to bring them into the upstream fold would be a desirable workflow.

@skjnldsv whichever solution you'll pick, I imagine that it should allow to select which metadata I want to read. Maybe something like the app "Social sharing" which has _Social sharing via Diaspora_, _Social sharing via email_, ....

I imagine that it should be possible to choose if the Nextcloud instance could read the metadata for

  • image (e.g.: EXIF)
  • audio (e.g. mp3 tags)
  • video

and / or the more specialized:

  • bibliographic
  • medical (for example the data embedded in the DICOM standard)
    and so on...

This appears to have been stagnant for a while. I really want to at least be able to view EXIF data in Photos.
Is there progress? Is Photos the place where this support should be introduced?

@TurkeyMan please read the entire thread.
We all want that, no one seems to have the time for it. :(

Requirements are as follow:

  1. should be an app
  2. should index metadatas
  3. should make them available through dav (might require server patch)
  4. should be shipped by default

Editable and searchable metadata are not part of the initial specs, might come later.
There is a 290$ bounty to it for sorting by exif (which should be easy once such criterias are fulfilled)

Cheers! :v: :relaxed:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

DanBenHa picture DanBenHa  路  12Comments

andrzej-r picture andrzej-r  路  7Comments

maetthew picture maetthew  路  3Comments

phenomax picture phenomax  路  3Comments

GAS85 picture GAS85  路  11Comments