Lightningbeam/GUI/Win32/PIL.py

34 lines
1.0 KiB
Python

#--------------------------------------------------------------
#
# 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