pix [x,y]返回整数而不是(R,G,B,A)tupel

时间:2015-12-17 00:56:42

标签: python python-imaging-library

我有以下问题: 我用几个PNG文件提取不同的gif帧:

def extractFrames(inGif, outFolder):
    frame = Image.open(inGif)
    nframes = 0
    while frame:
        frame.save( '%s/%s-%s.png' % (outFolder, os.path.basename(inGif), nframes ) , 'PNG')
        nframes += 1
        try:
            frame.seek( nframes )
        except EOFError:
            break;
    return True

按预期工作。 但是,如果我运行以下代码:

im = Image.open(item) #item is one of the earlier created PNGs
pix = im.load()
for x in range(0,im.size[0]):
    for y in range(0,im.size[1]):
        print pix[x,y]

输出类似于133,而不是预期的(255, 255, 255, 255)。 一旦我在Paint中打开文件并保存它们而不修改任何内容,脚本就可以正常运行并输出一个带有(R, G, B, A)的元组。

所以我的问题是: 为什么这样,如何在运行代码的第二部分之前修改我不必手动打开所有图像的代码?

编辑:我最初尝试将整个框架提取到GIF而不是PNG中,结果相同。

1 个答案:

答案 0 :(得分:-1)

打开时检查像素格式。如果图像是调色板,则添加另一个从图像调色板中检索颜色的位。