Skip to content
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

Incorrect orientation #293

Closed
Sorunome opened this issue Nov 19, 2020 · 2 comments
Closed

Incorrect orientation #293

Sorunome opened this issue Nov 19, 2020 · 2 comments

Comments

@Sorunome
Copy link
Contributor

To Reproduce

The exif parsing fails for this specific image. The fallback assumes no orientation, which is incorrect.
Image: https://sorunome.de/_matrix/media/r0/download/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj
Thumbnail: https://sorunome.de/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj?width=400&height=500&method=scale

Logs:

Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.631 Z] Received request                              contentLength=0 contentType="" host=sorunome.de method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.632 Z] Host is valid - processing request            contentLength=0 contentType="" host=sorunome.de method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.632 Z] Getting media record from database            allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: WARN[2020-11-19 21:01:11.633 Z] Attempted to animate a media record that isn't an animated type. Assuming animated=false  allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.633 Z] Getting thumbnail record from database        allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.634 Z] Thumbnail does not exist, attempting to generate it  allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.635 Z] Generating thumbnail                          allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.637 Z] Processing thumbnail request                  nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.643 Z] Using generator: jpgGenerator                 nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: WARN[2020-11-19 21:01:11.750 Z] Non-fatal error reading exif headers:exif: error decoding orientation: loading EXIF sub-IFD: exif: sub-IFD ExifIFDPointer decode failed: zero length tag value
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.768 Z] Finding a suitable datastore to pick for thumbnails  nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.768 Z] Using /opt/matrix-media-repo/media            nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.768 Z] Checking if file exists: /opt/matrix-media-repo/media/d2/48/a8892fa166a40c486944af86c7839ab1c78f  datastoreId=c80dc38f2d9a63fa13e068d83e7d7b17 datastoreUri=/opt/matrix-media-repo/media nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.791 Z] Writing file...                               datastoreId=c80dc38f2d9a63fa13e068d83e7d7b17 datastoreUri=/opt/matrix-media-repo/media nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.791 Z] Calculating hash of stream...                 datastoreId=c80dc38f2d9a63fa13e068d83e7d7b17 datastoreUri=/opt/matrix-media-repo/media nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.792 Z] Hash of file is 2b4eae91a1ee9991bf211fa2b30f8744f4ff299b122d87994eadfcc6743243e8  datastoreId=c80dc38f2d9a63fa13e068d83e7d7b17 datastoreUri=/opt/matrix-media-repo/media nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.792 Z] Wrote 125928 bytes to file                    datastoreId=c80dc38f2d9a63fa13e068d83e7d7b17 datastoreUri=/opt/matrix-media-repo/media nocontext=true worker_animated=false worker_height=600 worker_media=tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj worker_method=scale worker_requestId=thumbnail_tedomum.net_taSbhEoOjEfWAmkHSUqkwzXj_800_600_scale_false worker_width=800
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.793 Z] Reading thumbnail from datastore              allowRemote=true contentLength=0 contentType="" host=sorunome.de mediaId=taSbhEoOjEfWAmkHSUqkwzXj method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 requestedAnimated=true requestedHeight=500 requestedMethod=scale requestedWidth=400 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj server=tedomum.net usingForwardedHost=false
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.793 Z] File 2b4eae91a1ee9991bf211fa2b30f8744f4ff299b122d87994eadfcc6743243e8 has been downloaded
Nov 19 22:01:11 sorunome media_repo[30561]: INFO[2020-11-19 21:01:11.793 Z] Replying with result: *r0.DownloadMediaResponse &{ContentType:image/jpeg Filename:thumbnail.png SizeBytes:125928 Data:0xc0003060a8 TargetDisposition:}  contentLength=0 contentType="" host=sorunome.de method=GET queryString="height=500&method=scale&width=400" remoteAddr="2a02:8071:8d8:f00:e2ff:201d:ad16:33d" requestId=REQ-0 resource=/_matrix/media/r0/thumbnail/tedomum.net/taSbhEoOjEfWAmkHSUqkwzXj usingForwardedHost=false

Relevant part:

Non-fatal error reading exif headers:exif: error decoding orientation: loading EXIF sub-IFD: exif: sub-IFD ExifIFDPointer decode failed: zero length tag value

It may very well be that the jpeg in question does indeed have invalid exif orientation, meaning that browsers etc. are used to guessing what might be correct better

@Sorunome Sorunome added the bug label Nov 19, 2020
@Sorunome
Copy link
Contributor Author

It appears to be an issue in the exif parsing dependency and that this pr fixes it....only that it has been open since over five years 🙄

@Sorunome
Copy link
Contributor Author

We might want to think of switching to https://github.com/xor-gate/goexif2 which is a fork of what we currently use....while it is unmaintained, so is what we currently use, and that one seems to have some more bugfix commits in it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant