Hello!
impack is a library that offers all sorts of image-related features.
First and foremost, it lets you load and save images, in several more formats than just PNG and JPEG. Of particular note are GIF, allowing for animation support; saving basic MPEGs; and various formats found in the (still experimental!) Spot integration, including WebP and SVG.
Images are loaded as streams of bytes (in the case of GIFs, as an array of the same). Typically this means a Lua string, consisting of small numbers. This lets you examine these values when it’s useful to do so.
More commonly, you’ll just hand the contents on to further operations, for instance to save the image in another format. Other possibilities include box filters, resizes, rotates, conversion to grayscale, and several more from Spot.
The screenshots and video on the plugin page show the sample (link in the docs). It’s a little busy, which I hope to address, but shows a GIF looping in the background, as well as how to load BMP and TGA image data, which then have various various operations applied to them.
On that note, loading images as bytes is all well and good, of course, but we actually want to display them.
This is where Bytemap comes in. (In fact, any library that accepts a string of bytes would do, but so far this is what’s out there. :)  I’ve put in a request to add support to memory bitmaps, as well.)
Bytemaps can be populated from a byte stream. Then, much like Corona’s canvases and the aforementioned memory bitmaps, you attach them to a display object. Several such objects are created in the impack sample.
Additionally, bytemaps can be used to compose and deconstruct images from sub-images. This is demonstrated in their own sample, which has you dragging around a smaller “image” as a brush, painting its current contents into the larger image.
Any feedback appreciated!