//Note, this is a summary of the discussion with @sergey on IRC after it was requested that pillow be included with Blender.//
---
There are cases where it's useful to manipulate image data in Python, outside of Blender's image data-blocks (which are user data that's saved to file).
The Python module [[ https://python-pillow.org | 'pillow' ]] is a capable module, however we would prefer to expose Blender's internal image operations, instead of bundling pillow with Blender.
Reasons include:
- 100% compatibility with Blender's file formats, so all files that load in Blender load through Python (including color management).
- Image support can be buggy (security CVE's, bugs in one image loader not in another).
- Using Blender's image support means any improvements here will benefit Blender too.
- Potential for better integration with the rest of Blender //(so passing images from Python can be used in Blender as-is)//.
We could initially support a basic API:
- load/save
- rotate/scale/crop
- simple color operations (brightness contrast)
- direct pixel access using Python buffers.
Once basic support is working well we might consider:
- more advanced effects (perhaps de-duplicate with the sequencer effects/modifiers).
- color management access & conversion.
- text drawing (using the `blf` API, which already works in C, use for text in the sequencer).
- blitting content between images.
... others cold be added, these are just suggestions.