You know, I was talking to my teammate the other day, and thinking that if I only had a component to do compress/uncompress (inflate/deflate, actually) for me, I could make a real canvas out a a full size PNG by actually just setting bits in the data section of the PNG, using deflate to compress it (required), and write it out. It wouldn't necessarily be faster than a simple canvas, but at least we would have O(1) time for actions no matter how complex the canvas got. Zlib supports this...
Not to mention there are numerous other uses for built in compression support. The main problem is zip bombs, but if you can only write to tmp:/, I don't see that being a problem for the box, just the app.