BUG: add writeable_output=True
to pillow plugin to ensure data is writable by default
#976
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.
Closes: #877, #972
This PR adds the
writeable_output
kwarg to pillow'sread
anditer
functions. If set to True (default) the plugin will ensure that the returned numpy array is writable, i.e., it will copy the data into a new buffer in cases where pillow would have otherwise returned a read-only array. This has the advantage of allowing in-place modifications of the returned array which makes the plugin backward compatible with v2 and is supposedly less surprising behavior.It does come with a performance penalty though because we may have to copy the pixel data of a (potentially large) image. If, however, read-only is sufficient, e.g., when we copy the decoded data straight into an image batch (aka. image tensor) this extra copy is unnecessary. In such cases, users can set
writeable_output=False
. The plugin is then allowed to return read-only arrays if this is faster and users can enjoy improved performance.