To add to the list of options ... I made an image loading module for LuaAV that can build on OSX and Linux. It can use FreeImage, OpenEXR and/or ImageIO on OSX. Here's the link: https://github.com/LuaAV/LuaAV/tree/master/LuaAV/modules/image/src It comes paired with an Array module that's a generic byte buffer container: https://github.com/LuaAV/LuaAV/blob/master/LuaAV/libluaav/src/lua_array.cpp Sample API: local Image = require("Image") local img = Image("LuaAV.96.png") -- do stuff img:save("new.file.jpg") The repo layout isn't setup to build the module without the larger environment, so you'd have to do some legwork there. That said, chunks of the code might be useful if you felt like cobbling together your own module, particularly the FreeImage part. wes