【问题标题】:pix[x,y] returns integer instead of (R,G,B,A) tupel [duplicate]pix[x,y] 返回整数而不是 (R,G,B,A) tupel [重复]
【发布时间】:2016-03-23 08:24:55
【问题描述】:

我有以下问题: 我在几个 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,结果相同。

【问题讨论】:

    标签: python python-imaging-library


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多