Получение цветов пикселей из анимированного GIF с использованием Python PIL - PullRequest
2 голосов
/ 11 февраля 2020

Я конвертирую анимированный GIF для отображения на светодиодной панели. Для этого мне нужно прочитать GIF и сохранить значение цвета каждого пикселя в списке.

Использование im.seek(z) перемещает к следующему кадру анимации, но .getpixel((x, y)) всегда получает данные из первого кадра. Как я могу получить .getpixel для чтения из текущего кадра?

from PIL import Image, ImageFilter

# Open image file
im = Image.open('rgb.gif')

print("\n** Analysing image **\n")

# Display image format, size, colour mode
print("Format:", im.format, "\nWidth:", im.width, "\nHeight:", im.height, "\nMode:", im.mode)

# Check if GIF is animated
frames = im.n_frames
print("Number of frames: " + str(frames))

# Convert to RGB
rgb_im = im.convert('RGB')

print("\n** Converting image **\n")


# Iterate through frames and pixels, top row first
for z in range(frames):

    # Go to frame
    im.seek(z)
    print("Frame: ", im.tell())

    for y in range(im.width):
        for x in range(im.height):

            # Get RGB values of each pixel
            r, g, b = rgb_im.getpixel((x, y))

            print(r, g, b)


...