PIL.Image と PyQt4.QtGui.QImageの相互変換

下手なことをするより、素直に一度バッファに書き込むのが一番安全。
なお、***.save(fp, "BMP")と、"BMP"で読み書きしていますが、
アルファブレンドがある画像の場合は"PNG"で読み書きする必要があります。
ただ、"BMP"の方が速いです。

def pilimage_to_qimage(pilimage):
    fp = cStringIO.StringIO()
    pilimage.save(fp, "BMP")
    qimage = QImage()
    qimage.loadFromData(fp.getvalue(), "BMP")
    return qimage

def qimage_to_pilimage(qimage):
    buffer = QBuffer()
    buffer.open(QIODevice.WriteOnly)
    qimage.save(buffer, "BMP")
    
    fp = cStringIO.StringIO()
    fp.write(buffer.data())
    buffer.close()
    fp.seek(0)
    return PIL.Image.open(fp)