allow specifying access mode on image load functions #56
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.
This allows specifying a different access mode on the three image loading functions
NewImageFromBuffer
,NewImageFromFile
andLoadImage
.The sequential access mode allows the processing of huge images without writing temp data to the filesystem. On an AWS Lambda there are only 500MB temp space which limits the size of images processable using the random access mode.
For straight forward image resizing or cropping the sequential mode is sufficient.
I decided to extend the signatures of the loading methods (which affects existing code) instead of adding another three functions. Existing code can easily be fixed by adding
nil
for the load options.Wrapping the access mode specification in a load options type allows for future extensions (like the modes in #26) without breaking the API again.
The usage of the mode is tested by exporting a test image twice. In random access mode this works while it fails in sequential access mode.