PIL无法获取PNG图像(附图像)

时间:2018-01-22 07:54:36

标签: python png python-imaging-library

我正在研究一个非常基本的PNG图像,但是当我尝试加载它时,它会将所有像素都设为(0)。图片链接:https://i.imgur.com/Oook1VX.png

from PIL import Image
myImage = Image.open("Oook1VX.png")
print(myImage.getpixel((0,0)))
print(myImage.getcolors())

输出:

0
[(2073600, 0)]

我希望它能够看到绿色?它适用于其他图像,但不适用于此图像。如果有人有任何想法我会非常感激。

1 个答案:

答案 0 :(得分:2)

getcolors()返回将颜色映射到数字的元组列表(用于压缩目的)。

在您的示例中,该元组列表表示颜色2073600在图像中被编码为0。因此,如果getpixel()返回0,则表示2073600

2073600以十六进制为#1fa400,这是图片中的绿色。

您可能会受益于这样一个自动解析颜色的包装器:

import struct

class PngImage:
    def __init__(self, image):
        self.image = image
        self._colors = {index: color for color, index in image.getcolors()}

    def getpixel(self, pos):
        color = self._colors[self.image.getpixel(pos)]
        return struct.unpack('3B', struct.pack('I', color))

image = PngImage(Image.open("Oook1VX.png"))
image.getpixel((0, 0)) # => (0x1f, 0x1f, 0x00)