-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(server): read additional lens exif tags #17125
base: main
Are you sure you want to change the base?
Conversation
Couple outstanding questions based on some example LensID values I've seen:
If yes.. cool, nothing to do.
|
I personally think all the unknown and |
Didn't feel comfortable adding code for that last example without the risk of false positives but I've now made the others work the same way as if the exif info wasn't set. |
Description
exiftool
provides a tag namedComposite:LensID
that is derived from several dozen different lens-related tags since manufacturers don't have a standard way of writing camera lens information.In an effort to provide the best lens information possible in immich,
LensID
is now read, with a fallback ofComposite:LensSpec
,Composite:LensType
and the existingLensModel
.Out of about 85k RAW files that I had access to,
exiftool
provided aComposite:LensID
tag for all of them, though few with questionable values.This is a drastic improvement over the current approach, which, with the same sample of RAW images, read only about 8% of the lens information.
LensID distribution
LensType distribution
N/A, didn't have anyLensSpec distribution
LensModel distribution
There are other LensID examples that are less than idea, such as the example in #17050, but I think that's better than not reading the data at all.
Various findings:
LensModel
LensType
LensSpec
?Implements #17050
How Has This Been Tested?
Screenshots (if appropriate)
Checklist:
src/services/
uses repositories implementations for database calls, filesystem operations, etc.src/repositories/
is pretty basic/simple and does not have any immich specific logic (that belongs insrc/services/
)