Rewrite handling EXIF orientation — add tests, make it plugin-independent #875
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's Changing and Why
Handling EXIF orientation has been rewritten from scratch. In a result:
Pictures are now processed with bitmap transformation functions, which map pixels from source bitmap to correctly rotated one. Computational complexity is proportional to number of pixels in given picture.
Finally, tests for EXIF rotation are added in this pull request. They were missing so far.
What else might be affected
It somewhat addresses #873, but list of dependencies of rotate plugin is still unclear.
I suppose nothing breaks. Public API is unaffected.
Things to consider
Perhaps
transformBitmap()
should be promoted to public low-level API. Perhaps some plugins like flip can leverage it. For example, a whole flip vertically operation could be written as:Tasks
jimp.d.ts
— I am not sure if it's needed here, no exported method has been changed📦 Published PR as canary version:
0.10.2-canary.875.842.0
✨ Test out this PR locally via: