How can I get raw base64 PNG data from a PyQt4.QtGui.QImage object? The only method I can find that seems like it would help is bits(), but that just returns a sip.voidptr object and I have no idea where to go from there.
You have the right method if you want to directly access the data in memory. It is a C array, and has no python object associated, so it's a little tricky. You need: the start address from bits(), the depth() and the byteCount(). ctypes.string_at would give you access to the data there, which you would pass to a numpy array using the known bits-per-pix and image shape. 
I won't write more, because this kind of thing is likely to cause a crash (and I have no test data right now) - can you not load the image in the usual way?
Convert PyQt4.QtGui.QImage object to base64 PNG data