Fix keep EXIF data -ke / --keep-exif with BytesIO buffer #42
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.
As mentioned in #40 EXIF data is destroyed even when using the -ke flag. This is due to piexif.transplant expecting a subscriptable object (usually file path) which a BytesIO buffer itself is not. This is fixed by letting transplant use the buffer as an array and copying the resulting image into a new buffer which then replaces the old one.
This does not affect performance in any meaningful way, here are some Benchmarks on 50 giant (9mb) jpgs:
New and correctly working:
18.3 f/s
).2.829
totalOld with broken EXIF
18.2 f/s
).2.823
totalOld without '-ke' parameter
18.6 f/s
).2.747
total