Как сделать GIF Loop все время в Python? - PullRequest
0 голосов
/ 30 декабря 2018

Это мой код:

from PIL import Image, ImageSequence
import os

class MyImage:
    def __init__(self,file_path):
        self.image = Image.open(file_path)

def get_rewind(self):
    iter = ImageSequence.Iterator(self.image)
    index = 1
    for frame in iter:

        print("image [{}] : mode {}, size {}".format(index,frame.mode,frame.size))
        frame.save("./rewind-result/frame{}.png".format(index))
        index += 1

    sequence = []

    for f in ImageSequence.Iterator(self.image):
        sequence.append(f.copy())

    sequence.reverse()
    sequence[0].save("./reverse_out.gif",save_all=True, append_images=sequence[1:])

if __name__ == '__main__':
    image = MyImage("./test.gif")
    image.get_rewind()

GIF это reverse_out.gif, но это один цикл один раз.Итак, как установить свойство цикла? (Не в фотошопе)

1 Ответ

0 голосов
/ 30 декабря 2018

не здоровый метод:

from tkinter import *

class GIF(Tk):
    def __init__(self):
        super().__init__()
        self.geometry("500x500")
        self.x = 0

        self.img = PhotoImage(file="filename.gif", format=f"gif -index {self.x}")

        self.canvas = Canvas(self,width=1366, height=768,bd=0,highlightthickness=0)
        self.canvas.pack(expand = 1, fill = BOTH)

        self._img = self.canvas.create_image(0, 0, image=self.img,anchor = NW)
        self.run_gif()
        self.mainloop()

    def run_gif(self):
        try:
            self.img = PhotoImage(file="filename.gif", format=f"gif -index {self.x}")
            self.canvas.itemconfigure(self._img, image=self.img)
            self.x += 1
        except:
            self.x = 0

        self.canvas.after(10, self.run_gif)

GIF()

Но есть те, кто здоров!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...