Я конвертирую анимированный 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)