用PIL / Pillow打开PNG

时间:2015-03-17 19:09:22

标签: python image png python-imaging-library pillow

我正在尝试在Python中使用PIL / Pillow来打开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()
>>>

我得到的是:

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

2 个答案:

答案 0 :(得分:4)

作为@wiredfool says,图像在显示之前被转换为RGB。不幸的是,这意味着alpha通道被简单地删除。您想要进行自己的转换,将图像与白色背景混合在一起。

Image.composite(image, Image.new('RGB', image.size, 'white'), image).show()

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

base.paste(image, box, image)

答案 1 :(得分:3)

Image.show()将图像写为BMP(在Windows上),然后用查看器打开它。不幸的是,BMP编写器不保留alpha通道,因此您只是查看图像的RGB通道。