Adafruit_CircuitPython_ImageLoad icon indicating copy to clipboard operation
Adafruit_CircuitPython_ImageLoad copied to clipboard

Add buffer option for storing bitmaps to prevent out memory due to fragmentation.

Open kmatch98 opened this issue 4 years ago • 1 comments
trafficstars

For the case of sequentially loading large bitmaps and then freeing them from memory, it can sometimes cause the RAM to get fragmented so there is no contiguous chunk of memory large enough to hold the next bitmap:

MemoryError: memory allocation failed

It could be useful to have a way to define a bitmap "buffer" into which you can load a bitmap, and prevent memory segmentation. This would have to accommodate the varying color depth ("bits_per_pixel") of bitmaps or require this to be an input when creating the bitmap buffer. This buffer could be added as an optional input parameter to the adafruit_imageload.load function to direct it where to store the loaded bitmap.

kmatch98 avatar Mar 10 '21 22:03 kmatch98

The new bitmaptools.readinto function may help with this: https://circuitpython.readthedocs.io/en/latest/shared-bindings/bitmaptools/index.html#bitmaptools.readinto

This needs some exploration to verify the best way of using it, and an example will be useful.

kmatch98 avatar Mar 20 '21 04:03 kmatch98