-
Notifications
You must be signed in to change notification settings - Fork 511
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
Fix Exif orientation unwinding #596
base: master
Are you sure you want to change the base?
Fix Exif orientation unwinding #596
Conversation
…image represents 0 rotation When converting degrees to radians we want to reverse the degrees calculated from the image orientation as they represent the current transformation that is baked into the image. When applying the inverse transform, we will receive an image that represents UIImageOrientationUp
Would you mind adding a test which fails and is fixed by this PR? |
@garrettmoon sure thing, will get around to shortly |
…ing behaving incorrectly after transform applied
…f orientations available
@garrettmoon hopefully this test in 2b1b06a is sufficient. It creates a pixel grid and applies certain pixel layouts. It then runs it through the decode function to receive an image with up orientation. Fails on the four horizontal images when you revert 8fb0458, so that's good I guess. I also found another interesting bug along the way. UIGraphicsImageRenderer would handle CGFloats like |
@garrettmoon Hey mate, have you had a chance to look over any of this? |
Thank you, this works like a charm! I wonder why it hasn't got merged yet. |
@JunyuKuang no idea. But I've been running this in production now for two years with success. |
This fixed an issue I was dealing with. Thank you! |
Running this fix in production, and it's working great 👌 would love to see it merged! |
Currently, the pin_degreesFromOrientation function that's used when decoding images returns the degrees that represent the Exif orientation. However, the rest of the decode function then applies those values to the already oriented image, causing it to turn the exact wrong way. This affected the normal and mirrored versions of Left and Right.
The change in 6bbf499 addresses this by inverting the returned degrees to be used as a way to unwind the transform that's already applied to the current pixel grid.
Hopefully this is a helpful PR for you, I've made some changes to the base example in 8fb0458 that allow for you to swap out the data source used. At 8fb0458 you can see the issue for the affected orientations, then by 6bbf499 they should all look correct.