用PIL/Pillow打开PNG

Ram*_*hum 7 python png image python-imaging-library pillow

我正在尝试使用PIL/ Pillow在Python中打开PNG图像.你认为它是微不足道的,但图像显示已损坏.

这是一个示例图像:

我尝试使用Python 3.4和Pillow 2.7.0加载并显示它:

$ python
Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL.Image
>>> image = PIL.Image.open(r'C:\Users\Administrator\Dropbox\Desktop\example.png')
>>> image.show()
>>>
Run Code Online (Sandbox Code Playgroud)

我得到的是这个:

有谁知道为什么会这样以及如何解决它?(腐败不仅发生在我展示时,而且当我试图将其粘贴到另一个图像时,这是我最初的需要.)

Mar*_*som 5

@wiredfool所说,图像在显示之前已被转换为RGB。不幸的是,这意味着Alpha通道已被丢弃。您想要进行自己的转换,而是将图像与白色背景混合。

Image.composite(image, Image.new('RGB', image.size, 'white'), image).show()
Run Code Online (Sandbox Code Playgroud)

的文档paste显示它也忽略了alpha通道。您需要在两个位置指定图像,一个用于源,另一个用于蒙版。

base.paste(image, box, image)
Run Code Online (Sandbox Code Playgroud)