#-------------------------------------------------------------- # # PyGUI - PIL interface - Windows # #-------------------------------------------------------------- from __future__ import absolute_import from GUI import GDIPlus as gdi from GUI import Image from Image import merge def image_from_pil_image(pil_image): """Creates an Image from a Python Imaging Library (PIL) Image object.""" pil_image.load() mode = pil_image.mode w, h = pil_image.size if mode == "RGB": r, g, b = pil_image.split() pil_image = merge(mode, (b, g, r)) fmt = gdi.PixelFormat24bppRGB elif mode == "RGBA": r, g, b, a = pil_image.split() pil_image = merge(mode, (b, g, r, a)) fmt = gdi.PixelFormat32bppARGB else: raise ValueError("Unsupported PIL image mode '%s'" % mode) data = pil_image.tostring() bitmap = gdi.Bitmap.from_data(w, h, fmt, data) image = Image.__new__(Image) image._win_image = bitmap image._data = data return image